56

C で fork() を使用して、別のプロセスを開始しました。新しいスレッドを開始するにはどうすればよいですか?

4

6 に答える 6

63

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 番目の引数は、実行時にスレッド関数に渡される単一の引数です。

于 2008-09-11T15:09:22.577 に答える
16

私の知る限り、ANSI C はスレッド化を定義していませんが、さまざまなライブラリが利用可能です。

Windows で実行している場合は、msvcrt にリンクし、_beginthread または _beginthreadex を使用します。

他のプラットフォームで実行している場合は、pthreads ライブラリをチェックしてください (他にもあるはずです)。

于 2008-09-11T15:10:20.717 に答える
7

スレッドは C 標準の一部ではないため、スレッドを使用する唯一の方法はライブラリを使用することです (例: Unix/Linux の POSIX スレッド、そのスレッドから C ランタイムを使用する場合は _beginthread/_beginthreadex、または CreateThread Win32 のみ)。 API)

于 2008-09-11T16:03:18.517 に答える
7

pthreads は良いスタートです。こちらをご覧ください

于 2008-09-11T15:08:00.020 に答える
2

pthread (POSIX スレッド) ライブラリを確認してください。

于 2008-09-11T15:08:36.040 に答える