スレッドとミューテックスがどのように機能するかを学習しようとしていますが、現在、少し混乱している穴にぶつかっています。公式の SFML 1.6 チュートリアルから次のコードを取得しました。
#include <SFML/System.hpp>
#include <iostream>
void ThreadFunction(void* UserData)
{
// Print something...
for (int i = 0; i < 10; ++i)
std::cout << "I'm the thread number 1" << std::endl;
}
int main()
{
// Create a thread with our function
sf::Thread Thread(&ThreadFunction);
// Start it !
Thread.Launch();
// Print something...
for (int i = 0; i < 10; ++i)
std::cout << "I'm the main thread" << std::endl;
return EXIT_SUCCESS;
}
そしてそれは言った
したがって、両方のスレッドからのテキストが同時に表示されます。
ただし、それは起こっていません。最初に最初のスレッドを実行し、次に 2 番目のスレッドを実行しますが、同時に実行する必要はありませんか? Windows XP SP3 で Codeblocks IDE を使用し、SFML 1.6 を実行しています。私は何か間違ったことをしていますか、それともそれらがどのように機能するかを誤解していますか? 私の観点からは、スレッドは同時に実行されるはずなので、出力は次のようになります
「スレッド 1 のテキスト スレッド 2 のテキスト スレッド 1 のテキスト など」