web-dev-qa-db-ja.com

WindowsのCでスレッドを使用する。簡単な例?

Windows VistaのCで必要なものとスレッドを使用するにはどうすればよいですか?

簡単なコード例を教えていただけませんか?

18
szaman

WindowsでCreateThread()を使用する方法について MSDNサンプル を次に示します。

基本的な考え方は、CreateThread()を呼び出し、スレッド関数へのポインターを渡すことです。これは、作成されたターゲットスレッドで実行されるものです。

それを行う最も簡単なコードは次のとおりです。

#include <windows.h>

DWORD WINAPI ThreadFunc(void* data) {
  // Do stuff.  This will be the first function called on the new thread.
  // When this function returns, the thread goes away.  See MSDN for more details.
  return 0;
}

int main() {
  HANDLE thread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL);
  if (thread) {
    // Optionally do stuff, such as wait on the thread.
  }
}

SHCreateThread() を呼び出すオプションもあります。基本的な考え方は同じですが、COMの初期化など、必要に応じてシェル型の初期化を行います。

31
i_am_jorf

CreateThread 関数を使用します。

セマフォについてもおっしゃっていましたね。そのためには CreateSemaphore を使用します。

3
user113476

アトミック操作とミューテックスは優れています。私はpthreadではなくCreateThreadなどを使用しています。

1
martinr