C で fork() を使用して、別のプロセスを開始しました。新しいスレッドを開始するにはどうすればよいですか?
6 に答える
fork() について言及したので、Unix のようなシステムを使用していると仮定します。その場合、POSIX スレッド(通常は pthread と呼ばれます) を使用する必要があります。
特に、pthread_create() は、新しいスレッドを作成するために必要な関数です。その引数は次のとおりです。
int pthread_create(pthread_t * thread, pthread_attr_t * attr, void *
(*start_routine)(void *), void * arg);
最初の引数は、スレッド ID への返されたポインターです。2 番目の引数はスレッドの引数で、特定の優先順位でスレッドを開始する場合を除き、NULL にすることができます。3 番目の引数は、スレッドによって実行される関数です。4 番目の引数は、実行時にスレッド関数に渡される単一の引数です。
私の知る限り、ANSI C はスレッド化を定義していませんが、さまざまなライブラリが利用可能です。
Windows で実行している場合は、msvcrt にリンクし、_beginthread または _beginthreadex を使用します。
他のプラットフォームで実行している場合は、pthreads ライブラリをチェックしてください (他にもあるはずです)。
スレッドは C 標準の一部ではないため、スレッドを使用する唯一の方法はライブラリを使用することです (例: Unix/Linux の POSIX スレッド、そのスレッドから C ランタイムを使用する場合は _beginthread/_beginthreadex、または CreateThread Win32 のみ)。 API)
pthreads は良いスタートです。こちらをご覧ください
pthread (POSIX スレッド) ライブラリを確認してください。