Cでfork()を使用して別のプロセスを開始しました。新しいスレッドを開始するにはどうすればよいですか?プレーンCでスレッドを開始するにはどうすればよいですか?
答えて
あなたはfork()について言及して以来、私はあなたがUNIXのようなシステムにいると仮定します。この場合、POSIX threads(通常はpthreadsと呼ばれます)が使いたいものです。
特に、pthread_create()は新しいスレッドを作成するために必要な関数です。引数は次のとおりです。
int pthread_create(pthread_t * thread, pthread_attr_t * attr, void *
(*start_routine)(void *), void * arg);
最初の引数はスレッドIDへの返されたポインタです。 2番目の引数はスレッド引数です。特定の優先順位でスレッドを開始しない限り、NULLにすることができます。 3番目の引数は、スレッドによって実行される関数です。第4引数は、実行時にスレッド関数に渡される単一の引数です。
使用方法の例は次のとおりです。http://timmurphy.org/2010/05/04/pthreads-in-ca-minimal-working-example/ – tremendows
POSIXスレッドは「プレーンC」としてカウントされません。 C11標準はそれを定義していますか? – Hydronium
C11マルチスレッドAPIは、POSIXスレッドの影響を強く受けていますが、同一ではありません。だから、POSIXスレッドが "普通のC"であると私が言っていることは間違いありません。 –
を見て。
AFAIKでは、ANSI Cはスレッディングを定義していませんが、利用可能なさまざまなライブラリがあります。
Windowsで実行している場合は、msvcrtにリンクして_beginthreadまたは_beginthreadexを使用してください。
他のプラットフォームで実行している場合は、pthreadsライブラリをチェックしてください(ほかにも同様です)。
スレッドはC標準の一部ではないので、スレッドを使用する唯一の方法は、Unix/LinuxではPOSIXスレッド、そのスレッドからCランタイムを使用する場合は_beginthread/_beginthreadexなどのライブラリを使用する方法ですまたはCreateThread Win32 APIのみ)
- 1. 新しいスレッドでサービスを開始するにはどうすればよいですか?
- 2. 特定のコアでスレッドを開始するにはどうすればよいですか?
- 3. MDIでマウスイベントを開始するにはどうすればよいですか?
- 4. Windowsでサブプロセスを開始するにはどうすればよいですか?
- 5. 手動で開始されたスレッドが死ぬのを防ぐにはどうすればよいですか?
- 6. 継続タスクインスタンスを開始するにはどうすればよいですか?
- 7. ブルートゥースペアリングのプロセスを開始するにはどうすればよいですか?
- 8. Javaプログラミングを開始するにはどうすればよいですか?
- 9. アクティビティを開始するにはどうすればよいですか?
- 10. Hadoopのマップを開始するにはどうすればよいですか?
- 11. ASC3(ActionScript 3)フレームの開始時にリスニングを開始するにはどうすればよいですか?
- 12. C#プログラムでwinformの子としてプロセスを開始するにはどうすればよいですか?
- 13. カラーピケットダイアログを開始するにはどうすればいいですか?
- 14. Cでチルダ展開を行うにはどうすればよいですか?
- 15. 「電話サービス」(電話バンキングなど)の開発を開始するにはどうすればよいですか?
- 16. UBUNTU 9.04でCUDA開発を開始するにはどうすればよいですか?
- 17. AndroidでSkypeアプリケーション開発を開始するにはどうすればよいですか?
- 18. Valgrindが新しいスレッドごとに埋め込まれたgdbserversを開始しないようにするにはどうすればよいですか?
- 19. iPhone向けに開発を開始するにはどうすればよいですか?
- 20. .appファイルをobjective-cで開くにはどうすればよいですか?
- 21. Scalaを使用してWebの開発を開始するにはどうすればよいですか?
- 22. 最大値ではなく0からカウンタを開始するにはどうすればよいですか?
- 23. forループを1ではなく01で開始するにはどうすればよいですか?
- 24. Javaでメインスレッドをブロックしないバックグラウンドスレッドを開始するにはどうすればよいですか?
- 25. _beginthreadexでスレッドを開始するには?
- 26. EDI 837 Professionalの開発を開始するにはどうすればよいですか?
- 27. System.Diagnostics.Process.Start()で開始されたコンソールアプリケーションのウィンドウタイトルを指定するにはどうすればよいですか?
- 28. スレッドでtrueを使用するにはどうすればよいですか?
- 29. Javaでスレッドを使用するにはどうすればよいですか?
- 30. スレッドでv8を使用するにはどうすればよいですか?
プラットフォームによって異なります。 Windowsでこれを行う方法は次のとおりです。[http://msdn.microsoft.com/en-us/library/ms682453.aspx](http://msdn.microsoft.com/en-us/library/ms682453.aspx) –
リンク先のCreateThreadのドキュメントで説明したように、プログラムがCランタイムライブラリを使用する場合は、CreateThreadではなく_beginthreadexを使用する必要があります。 – ChrisN
ありがとう、私はそれに気付かなかった。あなたがCRTを使用しているかどうかをどのように知っていますか?私はすべてがそれを使用すると思った。 –