問題タブ [semaphore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
9 に答える
15059 参照

macos - Mac OS X の POSIX セマフォ: sem_timedwait の代替

セマフォを使用するプロジェクトを (Linux から) Mac OS X に移植しようとしていますが、一部の posix セマフォは Mac OS X に実装されていません。

このポートで打ったのはsem_timedwait()

セマフォについてはよくわかりませんが、マニュアルページからはsem_wait()近いようsem_timedwaitで、実装されています

マニュアルページから

sem_timedwait()
sem関数は、関数内の as によって参照されるセマフォをロックしsem_wait()ます。ただし、別のプロセスまたはスレッドが関数 を実行してセマフォ
をロック解除するのを待たずにセマフォをロックできない場合 、この待機は 、指定されたタイムアウトが期限切れになると終了します。
sem_post()

セムフォがどのように機能するかについての私の限られた理解から、sem_timedwait()より安全であることがわかりますが、それでも sem_wait() を使用できるはずです

これは正しいです?そうでない場合、他にどのような選択肢がありますか...

ありがとう

0 投票する
3 に答える
492 参照

multithreading - セマフォに関する質問

次のコードを考えると、「7文字を入力しました」が特に前回3回表示された原因を理解できますか?

入出力のテスト:

0 投票する
2 に答える
3098 参照

linux - sem_post() が有効なセマフォで失敗する

セマフォを持つキューがあります。特定の時点でsem_post()、セマフォ自体は有効ですが、すべての呼び出しで常に「無効な引数」エラーが返される

セマフォは、決して削除されない C++ オブジェクトのプライベート メンバーであり、gdb で検査することもできます。sem_getvalue()- の直前に追加しましたsem_post()- 値は OK を読み取り、その後失敗しsem_post()ます。何が間違っている可能性がありますか?

0 投票する
3 に答える
4167 参照

c++ - pthread を使用して複数のコアを利用する際の問題

SDL と Pthread を使用して C++ でレイ トレーサーを開発しています。プログラムで 2 つのコアを使用する際に問題が発生しています。スレッドは機能しますが、両方のコアを 100% 使用していません。SDL とのインターフェイスとして、SDL_Surface.pixels のメモリに直接書き込むので、SDL によってロックされることはないと思います。

私のスレッド関数は次のようになります。

注: scene->renderPixel は const であるため、両方のスレッドが同じメモリから読み取ることができると想定しています。これを行う2つのワーカースレッドがあり、メインループでこれらを使用して動作させます:

注:スレッドを同期する代わりに、スレッドを作成して参加することも試みました。これを「-lpthread -D_POSIX_PTHREAD_SEMANTICS -pthread」でコンパイルすると、gcc は文句を言いません。

私の問題は、実行中の CPU 使用率のグラフを使用して最もよく説明されています: (ソース: jopsen.dk )実行中の CPU 使用率。

グラフからわかるように、私のプログラムは一度に 1 つのコアしか使用せず、時々 2 つのコアを切り替えますが、両方を 100% 駆動することはありません。私はいったい何を間違えたのでしょうか?シーンでミューテックスやセマフォを使用していません。バグを見つけるにはどうすればよいですか?

また、scene->renderPixel() の周りに while(true) を配置すると、両方のコアを 100% にプッシュできます。したがって、これはオーバーヘッドが原因ではないかと疑っていますが、複雑なシーンを考えると、0.5 秒ごと (たとえば FPS: 0.5) だけ同期します。私のバグが何であるかを伝えるのは簡単ではないかもしれませんが、これをデバッグするアプローチも素晴らしいでしょう...私は以前にpthreadsで遊んだことがありません...

また、これはハードウェアまたはカーネルの問題である可能性があります。私のカーネルは次のとおりです。

ノート:

0 投票する
3 に答える
3273 参照

c - このコードでセグメンテーション違反が発生するのはなぜですか?

このコードの実行中にセグメンテーション違反が発生します。なぜこれが起こっているのかわかりません - 誰でも考えられる理由を見ることができますか? (セマフォの共有メモリは既に取得して初期化しています。)

私のコード:
0 投票する
11 に答える
105209 参照

java - Java のミューテックスとセマフォとは何ですか? 主な違いは何ですか?

Java のミューテックスとセマフォとは何ですか? 主な違いは何ですか?

0 投票する
3 に答える
4131 参照

concurrency - モニターとセマフォの良い類推/例を探しています

モニターは、並行環境でのセマフォの問題を解決することになっています。
モニター対セマフォを使用した良いアナロジーを探しています。

類推のための情報を使用してください:
4 つのタスク (TaskA、TaskB、TaskC、TaskD)
1 つの変数varX

各タスクは、何らかのイベントに基づいてvarXを操作したいと考えています。