0

C でジョイスティック ライブラリを作成していますが、スレッド セーフにしたいと考えています。pthread ミューテックスを使用しても問題ありませんか? 私のライブラリを使用するアプリケーションが、たとえば ACE をスレッド フレームワークとして使用している場合でも機能しますか (ACE が pthread を拡張するだけではないかどうかはわかりませんが、そうではないと仮定しましょう)。

CriticalSectionWindows にも同じことが言えます: mingw+gcc で pthread と組み合わせてWindows を使用できますか? それとも、ネイティブ実装が常に使用されるように OS が実行しなければならないスレッド化 (Linux およびCriticalSectionWindows の pthread ) ですか?

4

1 に答える 1

0

スレッドはユーザーレベルで動作できるため、OSがすべての同時実行をスケジュールするという保証はありません。そうは言っても、ユーザーに特定のロックメカニズムを必要とせずに、ライブラリをスレッドセーフにするよう常に努める必要があります。

たとえば、すべての関数を「純粋」または再入可能にすることができます。明示的にスレッドセーフではないバージョンや、pthreadなどの特定のライブラリを必要とする代替バージョンを提供することもできます。最も極端なケースでは、ロックフリーの同期を提供できます。

于 2012-08-14T02:27:45.283 に答える