- 论坛徽章:
- 2
|
回复 10# pmerofc
exit和_endthreadex这种函数是不会返回的啦。
- process_startup( ... ) {
- exit( main(argc, argv) );
- // 不会执行到这里
- }
复制代码
- thread_startup( ... ) {
- _endthreadex( thread_routine(arg) );
- // 也不会执行到这里
- }
复制代码 pthread是标准, linux我不懂。
Windows的话, _endthreadex当中会调用ExitThread。
ExitThread就真的结束线程, OS不会再给它时间片, 线程不能够继续执行代码。
不会返回到_endthreadex,也不会返回到thread_startup。
等着返回值被取出并关闭后(GetExitCode/Wait join)线程就完全撤消了。
exit也类似, 不过要做的事情更多一些。
无论是在什么地方调用exit/_endthreadex/ExitProcess/ExitThread, 就不会再返回到调用点上了。
main返回前如果调用了exit, main就不会返回, process_startup中的exit就不会被调用。 |
|