0
スレッドの呼び出しat(i)
関数を呼び出し、スレッドの呼び出しを呼び出すpush_back()
関数、私は "範囲外"のエラーを取得、なぜですか?1つのスレッド読み取りと1つのスレッド書き込みは、std :: deque safeですか?
スレッドの呼び出しat(i)
関数を呼び出し、スレッドの呼び出しを呼び出すpush_back()
関数、私は "範囲外"のエラーを取得、なぜですか?1つのスレッド読み取りと1つのスレッド書き込みは、std :: deque safeですか?
標準ライブラリオブジェクトで非constメンバ関数を呼び出すことはスレッドセーフではありません(特定の非const関数が他に書かれていない限り)。データ競合や未定義動作を防ぐために、オブジェクトへのアクセスを同期させる必要があります。
両端キューに「at」関数を使用することも、かなり非効率的です。 –
'size()'の変数は各コアのレジスタに残っていると思いますか? 「volatile」を使うことで、「one read one write」という特定の状況の問題を解決できるか? – egraldlo
いいえ、まだUBです。 –
自己定義のキューを作成し、 'volatile(変数) '変数を使って' size() '関数を定義します。 – egraldlo