0

さまざまなスレッドを作成、ロック、同期するために、pthread とそれに関連する API についてすべて読みました。しかし、threadpool、consumer/producer などの単語のヒントをよく見つけます。これらが pthread 実装のモデルであることは理解しています。

pthread 実装のさまざまなモデルとその長所/短所を教えてください。どのタイプのシナリオで、どのモデルを使用する必要がありますか?

また、一部の C システム ライブラリ関数が、strtok などのスレッド ルーチンで安全に呼び出されないのはなぜですか?

前もって感謝します。

4

1 に答える 1

2

これらは pthread 実装のモデルではありません。スレッド プールとコンシューマー/プロデューサーは、pthreads を使用して実装できるものです。

pthreads の実装方法は、使用しているオペレーティング システムによって異なります。pthreads は基本的に API です。

一部の C 関数は、スレッド化が考慮される前に作成されたため、再入可能ではありません。そのため、スレッド化されたプログラムでそれらを呼び出すことはお勧めできません。たとえば、 strtok は、最後に到達した場所を文字列に保存します (したがって、スレッド化されたコンテキストでは言うまでもなく、同時に 2 つの異なる文字列で strtok を呼び出すことはお勧めできません)。

于 2013-06-27T10:21:26.370 に答える