gpt4 book ai didi

c++ - 为什么在重新执行我的多线程代码后输出不一样?

转载 作者:行者123 更新时间:2023-11-30 01:18:55 24 4
gpt4 key购买 nike

当我执行以下代码时,每次重新编译和重新执行后,答案(输出)都不一样。这是什么原因?

 #include <iostream>
#include <cstdlib>
//#include <pthread.h>

using namespace std;

#define NUM_THREADS 5

void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
cout << "Hello World! Thread ID, " << tid << endl;
pthread_exit(NULL);
}

int main ()
{
pthread_t threads[NUM_THREADS];
int rc;
int i;
for( i=0; i < NUM_THREADS; i++ ){
cout << "main() : creating thread, " << i << endl;
rc = pthread_create(&threads[i], NULL,
PrintHello, (void *)i);
if (rc){
cout << "Error:unable to create thread," << rc << endl;
exit(-1);
}
}
pthread_exit(NULL);
}

g++ test.cpp -o 测试 -lpthread./测试

输出1:

main() : creating thread, 0
main() : creating thread, 1
main() : creating thread, 2
Hello World! Thread ID, 0
main() : creating thread, 3
Hello World! Thread ID, 1
Hello World! Thread ID, 2
main() : creating thread, 4
Hello World! Thread ID, 3
Hello World! Thread ID, 4

g++ test.cpp -o 测试 -lpthread./测试

输出2:

main() : creating thread, 0
main() : creating thread, 1
main() : creating thread, 2
main() : creating thread, 3
Hello World! Thread ID, 0
main() : creating thread, 4
Hello World! Thread ID, 3
Hello World! Thread ID, 2
Hello World! Thread ID, 4
Hello World! Thread ID, 1

最佳答案

由于你的线程不是同步的,所以执行顺序不是精确确定的,取决于你的执行上下文,比如同时运行的其他进程等,每次运行时可能会有所不同程序。

关于c++ - 为什么在重新执行我的多线程代码后输出不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com