Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私はさまざまな方法で生産者/消費者の問題を解決することに取り組んでいます。私が現在取り組んでいるものには、セマフォの down() および up() 関数呼び出しを保護するための Peterson のソリューションと組み合わせた、セマフォの独自の実装が含まれます。
問題は、私は C で作業しており、セマフォを作成する唯一の方法は、down() と up() の関数ポインターを持つ構造体を使用することです。これは正しい考えですか?
OS 提供またはハードウェア提供の同期プリミティブを使用する可能性があります。例としては、システム コール (Linux のfutexコール、Windows のEnterCriticalSectionなど)、ハードウェア スワップ コール ( cmpxchgx86、ldrex/strexARM など)、またはこれらのメソッドのいずれかを使用するライブラリ関数 ( などpthread_mutex) があります。
futex
EnterCriticalSection
cmpxchg
ldrex/strex
pthread_mutex
OS やハードウェアの助けを借りずに同期を行おうとすると、かなり困難になる可能性があります。