質問編集履歴

2

説明追加

2020/03/24 13:28

投稿

guriguri
guriguri

スコア34

test CHANGED
File without changes
test CHANGED
@@ -62,7 +62,7 @@
62
62
 
63
63
 
64
64
 
65
- unique_lockで取得したロックが解放されていないからだろうと思い、下記のようにunique_lockを中括弧 { } で囲こみ、中括弧から抜ける際に unique_lock のデストラクタが呼ばれてロックが解放されるのを期待実装しました。
65
+ unique_lockで取得したロックが解放されていないからだろうと思い、下記のようにunique_lockを中括弧 { } で囲こみ、中括弧から抜ける際に unique_lock のデストラクタが呼ばれてロックが解放されるのを期待して実装しました。
66
66
 
67
67
  ```c++
68
68
 

1

質問内容変更

2020/03/24 13:28

投稿

guriguri
guriguri

スコア34

test CHANGED
File without changes
test CHANGED
@@ -94,21 +94,21 @@
94
94
 
95
95
  結果はビンゴでした。
96
96
 
97
- ここで質問なのですがこれは問題ないのでしょうか?
98
97
 
99
- ネットの情報やサンプルをいろいろ探してもこのようにしているものが見つからなかったの心配でして。
100
98
 
99
+ ここで質問なのですがこのように中括弧にてロックが解放されるようにしても問題ないのでしょうか?
100
+
101
- あと、condition_variableのwait関数はスレッド待ちに入っ瞬間にそのスレッドが保持しているlock開放すると思たのですがそのような機能ないのでしょうか? (javaと混乱しいるような気もしないでもないのですが...)
101
+ わざわざワーカースレッドを利用しているのはjobの処理を待ちたくないから利用しているのにjob追加する際に待ていて本末転倒でして・・・。
102
102
 
103
103
 
104
104
 
105
- 纏めますと質問は2つり、
105
+ 今書いていて思ったのでが job キューの更新中に job が追加されるこるので危険かもしれないですね・・・。
106
106
 
107
- 1つ目はunique_lock<mutex> mlock(mtx); を中括弧 { } で囲こむことにより抜けた際に(デストラクタ呼ばれ)lockが解放されるようにしているのは問題ないか.
107
+ んー解決策分からないです。
108
108
 
109
- 2つ目は、condition_variableのwait関数にはスレッドが保持しているlockを開放する機能はないのか?
110
109
 
110
+
111
- なります。
111
+ よくあるケースだ思うのでがネットでは一歩踏み込んだ良い例が見つからずでして
112
112
 
113
113
 
114
114