メインスレッドの終了の問題
1586 ワード
以下から抜粋:http://bbs.csdn.net/topics/370193909
Windowsコアプログラミングで説明されています.69ページ:
“Windows Platform SDKドキュメントでは、すべてのスレッドが実行を終了するまでプロセスが実行を終了すると宣言しています.
システム的には、この説は正しいです.しかし、 C / C + +実行期間はアプリケーションに対して異なるルールを採用し、呼び出しによって
E x i t P r o c e s s,C / C + +ランタイム起動コードは、メインスレッドがそのエントリポイント関数から戻ってくると、プロセスが実行を終了することを保証します.プロセスに他のスレッドが実行されているかどうかにかかわらず.ただし、エントリポイント関数でEを呼び出すと x i t T h r e a d、Eを呼び出すのではなく x t i P r o c e s sまたは単に戻ると、アプリケーションのプライマリ・スレッドは実行を停止しますが、プロセスの少なくとも1つのスレッドがまだ実行されている場合、プロセスは実行を終了しません.」
12階の言い方に同意します.テストコードを書くことができます
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Windowsコアプログラミングで説明されています.69ページ:
“Windows Platform SDKドキュメントでは、すべてのスレッドが実行を終了するまでプロセスが実行を終了すると宣言しています.
システム的には、この説は正しいです.しかし、 C / C + +実行期間はアプリケーションに対して異なるルールを採用し、呼び出しによって
E x i t P r o c e s s,C / C + +ランタイム起動コードは、メインスレッドがそのエントリポイント関数から戻ってくると、プロセスが実行を終了することを保証します.プロセスに他のスレッドが実行されているかどうかにかかわらず.ただし、エントリポイント関数でEを呼び出すと x i t T h r e a d、Eを呼び出すのではなく x t i P r o c e s sまたは単に戻ると、アプリケーションのプライマリ・スレッドは実行を停止しますが、プロセスの少なくとも1つのスレッドがまだ実行されている場合、プロセスは実行を終了しません.」
12階の言い方に同意します.テストコードを書くことができます
C/C++ code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <process.h> /* _beginthread, _endthread */
#include <windows.h>
unsigned __stdcall _threadfun(
void
* pParam)
{
while
(TRUE)
{
Sleep(10);
}
}
void
main()
{
unsigned uThreaID;
_beginthreadex(NULL,0,_threadfun,NULL,NULL,&uThreaID);
// ExitThread, ,crt ,
// ExitThread ,crt , ,
//ExitThread(1);
}