我正在尝试学习线程和互斥锁是如何工作的,但是我现在遇到了一些困惑,我从官方 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;
}
它说
因此,来自两个线程的文本将同时显示。
但是这并没有发生,它首先执行第一个线程然后执行第二个线程,它们不应该同时运行吗?我在 Windows XP SP3 上使用 Codeblocks IDE,运行 SFML 1.6。我做错了什么,还是我误解了它们的工作原理?从我的角度来看,线程应该同时执行,所以输出应该是这样的
“来自线程 1 的文本来自线程 2 的文本来自线程 1 的文本,依此类推”