semaphore

    6

    1答えて

    私はそれ自身のスレッドで実行され、ブロックせずに起動/停止することができるプロセスを持っています。これは最終的にWindowsサービスに入りますが、コンソールアプリケーションでこれを設定しています。これは完全に完了するまでです。 Start()を呼び出した後、Ctrl-Cを押すまでメインプログラムスレッドをブロックします。私は、これが動作することを知っている: public static void

    1

    4答えて

    まず、mutexと条件変数を使用して実装できることはわかっていますが、最も効率的な実装を可能にしたいと考えています。 競合がない場合は、高速パスのセマフォが必要です。 Linuxではfutexで簡単です。例えば、ここで待ってます: if (AtomicDecremenIfPositive(_counter) > 0) return; // Uncontended AtomicAdd(&_wait

    1

    1答えて

    名前付きセマフォと名前なしセマフォの違いは何ですか? Windowsの例では、HANDLEを使用し、名前を使用しないで、常にWaitforSingleObject(待機)とReleaseSemaphore(信号)を実行します。

    3

    1答えて

    私は以下のコードを持っており、SEGV信号によって殺されています。デバッガを使用すると、main()の最初のsem_init()によってkillされていることが示されます。最初のsem_init()をコメントアウトすると、同じ問題が2番目に発生します。私はこのsys呼び出しがSEGVを引き起こす原因を突き止めることを試みた。 elseは実行されていないので、エラーが起きてから値を返すことができます

    3

    3答えて

    sem_waitをシグナルハンドラ(特にスレッドごとのSIGSEGVシグナル)で使用できないのはなぜですか?誰かがアプリケーションをクラッシュさせるシナリオの例を教えてもらえますか?私はsem_waitがリエントラントとの両方であり、スレッドセーフであると思います、ここで何が問題なのですか?なぜそれがない非同期の安全?

    2

    1答えて

    私は現在のスレッドを停止するためにdispatch_semaphore_waitを使用していますが、すべてのスレッドを停止しているようです。 コード: SampleReader *reader = [[SampleReader alloc] initWithHostname:hostname andFilePath:filepath]; reader.endHandler = endHandle

    0

    2答えて

    #include <semaphore.h> sem_t* x; int main() { x = sem_open("x", O_CREAT, 0, 0);; sem_wait(x); sem_wait(x); sem_wait(x); std::cout << "\ndone\n"; } このコードでも最初sem_wait()を渡すべきではありませ

    1

    1答えて

    私はC++プロジェクト用のセマフォ配列を作る必要があります。私はsemget()をmain()から呼び出していません。 main.cppのメソッドでも、簡単にするための別の方法があります。プログラムがsemget(semkey,nsems,0666|IPC_CREAT)に達すると、明らかに "keyのセマフォー識別子が存在しますが、semflgの下位9ビットで指定された操作許可は与えられません"と

    3

    2答えて

    これは私たち(私と私の同僚)がここで直面する古典的な並行性の問題です。私たちは怠け者ではありませんでした。あなたが適切に手助けをするために関連コードを持ってきました。私たちは、リーダーとライターを定義する2つのクラスを持っている 、彼らは両方のは Threadクラスを拡張し、そしてもちろんそのようrunメソッドをオーバーライドします。 while(!isInterrupted()) { try{

    1

    2答えて

    私はFreeRTOSを使用してATMega323_WinAVRでプロデューサ/コンシューマアルゴリズムを実装しようとしています。 AVR Simulator: Excessive stack overflow, stop sim をスタックポインタは、この行で停止:このエラーが表示されないのはなぜ static void prvCopyDataToQueue ( xQUEUE *pxQue