私は以下のチュートリアルで読んでいます:C++ Multithreading Tutorial。 10個の固有のスレッドを作成し、スレッド番号の文字列を出力するチュートリアルのコードをコンパイルしました。ここでミューテックスとスレッド:説明
は、コードが、リンクを開くためにしたくない人のために次のようになります。
#include <iostream>
#include <thread>
static const int num_threads = 10;
//This function will be called from a thread
void call_from_thread(int tid) {
std::cout << "Launched by thread " << tid << std::endl;
}
int main() {
std::thread t[num_threads];
//Launch a group of threads
for (int i = 0; i < num_threads; ++i) {
t[i] = std::thread(call_from_thread, i);
}
std::cout << "Launched from the main\n";
//Join the threads with the main thread
for (int i = 0; i < num_threads; ++i) {
t[i].join();
}
return 0;
}
私は、コードを実行すると、それはコンパイルし、出力は一種のランダムです。 各スレッドは起動しますが、順番に起動されません。
私はstd :: mutexのC++リファレンスを読んでいました。それは私の必要としているように聞こえます。
こういうコードでstd:mutexをどのように実装すれば、スレッドが同じ共有リソースを使用しないようにすることができますか? 。
あなたは彼らが順番に起動しなかったと思いますか?コードは非常に明確にそれらを順番に起動します。 –
[Mutex example/tutorial?]の可能な複製(http:// stackoverflow。com/questions/4989451/mutex-example-tutorial) – TemporalWolf
問題の 'std :: mutex'はどこにありますか?また 'std :: mutex'は厳密な実行順序を保証するものではありません。 –