void * sum_thread(void *data)
{
}
pthread_create(&thread_id[i], NULL, sum_thread, &arrdata[i]);
-1
A
答えて
0
これはpthreadsが期待する関数ポインタの形式なので、コールバック関数はその形式を持たなければなりません。これについては何も分かりませんが、POSIX標準で指定されているものです。
man pthread_create
ができます:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
あなたは関数ポインタの他の種類を渡すだろう、それは両方のC標準およびPOSIX標準に違反する、とあなたは未定義の動作を起動します。
1
これは、pthreads API(pthread_create()
が属する)の設計者が選択した戻り値の型(void *
)と引数リスト(単一のvoid *
)の組み合わせです。
このAPIを使用してスレッドを開始するすべてのプログラムは、その正確なプロトタイプをスレッド関数に渡す必要があります。この呼び出しの仕組みの詳細については、ドキュメント(the manual pageなど)を読むことができます。
C言語の「任意のデータ」を表現するためには、かなり一般的な方法です。
+0
pthread_createの構文を説明してください –
関連する問題
- 1. 誰かが私のプログラムがクラッシュする理由を説明できますか?
- 2. 誰かがsize_t型を例として使用する理由を誰でも説明できますか?
- 3. (void)someIntを使用する理由コード
- 4. 誰かがタイプでこのエラーが発生する理由を説明できますか?
- 5. SpriteKitでスケールする必要がある理由を説明できる人はいますか?
- 6. strtotime()関数の説明が必要です。誰かがこの行を説明できますか?
- 7. 誰かがなぜ "void func_dec(void(*)(int)funcptr);"は無効です
- 8. 誰かがこのコードがループを続ける理由を説明できますか?
- 9. プロトタイプとして渡した後に変数をvoidにする必要があるのはなぜですか?
- 10. tinyxml誰かがエスケープする必要がある文字について説明できますか?
- 11. 非同期戻り型がvoid、タスクまたはタスクである必要がある理由<T>
- 12. 誰かが私の説明文が技術的に声明としてカウントされない理由を私に説明することはできますか?
- 13. void 'の前に'; 'を付ける必要があります。エラー?
- 14. 誰かが私のjqueryクリックハンドラが動作を停止する理由を説明できますか?
- 15. 私はIBOutletsを - (void)viewDidUnloadでリリースする必要がありますか?
- 16. セマフォでロックを使用する必要がある理由
- 17. java.util.ConcurrentModificationException誰かが私にこの論理的な理由を説明できますか?
- 18. 誰かがTYPE_INPUT_METHOD_DIALOGの使い方を説明できますか?
- 19. voidをprintf関数で使用する理由
- 20. 誰でもWrite-AheadでNO-FORCEを使用する理由を説明できますか?
- 21. shelllcodingでNO-OPスライドが使われている理由を誰でも説明できますか?
- 22. 誰かがMVCが3層アーキテクチャよりも優れている理由を説明できますか?
- 23. このコード行列の説明に誰かが必要です。
- 24. 誰かがこのコードセグメントを説明できますか?
- 25. NHibernateでinverse = "true"を使用する理由を説明できますか?
- 26. HTMLで{{、}}タグを使用する理由を説明できますか?
- 27. 誰もが関数の誤解を説明できますか?
- 28. 誰かが説明することができます
- 29. - 誰かが説明できる場合の説明
- 30. JavaScriptで「プロトタイプ」を使用する必要があります
関数はvoidポインタを返します。それがあなたがそれを必要とする理由です。 – tilz0R
pthreadsのPOSIX仕様を読んだだけで、クリアになるはずです – StoryTeller