今自分は, シミュレーションプログラムを書いています.
簡略化すると以下のようなプログラムです.
関数A
int main () {
thread t1(loop);
t1.detach();
while(1) {
// mtx.lock();
描画処理のための現在位置計算など;
// mtx.unlock();
描画処理;
}
}
そのため, このままでは時々不正な値が出たので, コメント文にあるようにmutexのlockとunlockによって排他制御を試みました.
しかし, 思ったように排他制御が出来なくて困っています.
t1.detach()しているためだと思うのですが, 無限ループを回しながらもう一方のスレッドで擬似的に無限ループを回す方法が
detachを使う以外に思いつかず, ご助言をいただきたいです.
宜しくお願い致します.
理想としては, loop()内の関数が, 共有資源にアクセスする時だけ(位置情報取得の関数などにアクセスする時だけ)ロックをかけ,
安全にアクセスできるようにしたいです.