私は2つの異なる操作を実行するプログラムを持っており、それらの間で変数を共有したいと思います。C++、プロセスやスレッド間でデータを共有する方法
現時点では、私はフォークプロセスの代わりにスレッドを使用していますが、変数を変数として宣言しても変数の共有に問題があります。
私はやってブーストしてみました:
boost::thread collisions_thread2(boost::bind(function_thread2);
をvolatileとして共有変数を宣言することによって、function_thread2()関数は共有変数の変化を見ることができないようです。
私は何をしたいのですがのようなものです:あなたは私のチュートリアルや簡単にスレッド間で変数を共有するための方法を
thread1:
while(true){
//..do somet stuff
check variable1
}
thread2:
while(true){
do some other stuff
check and write on variable1
}
を提案することはできますか? この場合、ブーストライブラリが役立つことがありますか? fork()を使う方が良いと思いますか?
私は重大な状況を避けるためにミューテックスを使用する必要があることを知っていますが、私は決してそれを使用しませんでした。
チェック[この質問](http://stackoverflow.com/questions/118199/c-thread-shared-dataが)場合に役立ちます。そして最終的に[Boost Thread Synchronization](http://www.boost.org/doc/libs/1_49_0/doc/html/thread/synchronization.html) – jweyrich
volatileはスレッドとは関係ありません –
あなたは '変数を共有することができます。グローバル変数はデフォルトで共有されます。しかし、データレースを簡単に作成できるので、これは悪いことです。データレースを持っているときは、あなたのプログラムが合理的に動作するとは期待できません。データレースを診断するためのヘルプを得るには、実際のコードをもっと投稿する必要があります。 – bames53