<分区>
如何在 C++ 中创建线程并在主线程与另一个线程之间进行通信?
一些代码示例将不胜感激。
<分区>
如何在 C++ 中创建线程并在主线程与另一个线程之间进行通信?
一些代码示例将不胜感激。
最佳答案
线程与其作用域共享变量,这就是互斥锁如此重要的原因。
因此,只需编辑两个线程共有的变量,您就可以非常轻松地进行通信:
#include <iostream>
#include <pthread.h>
main() {
pthread_t f2_thread, f1_thread;
void *f2(), *f1();
int i1;
i1 = 1;
pthread_create(&f1_thread,NULL,f1,&i1);
pthread_create(&f2_thread,NULL,f2,&i1);
pthread_join(f1_thread,NULL);
pthread_join(f2_thread,NULL);
}
void *f1(int *x){
std::cout << *x << std::endl;
}
void *f2(int *x){
sleep(1)
std::cout << ++(*x) << std::endl;
}
这应该打印出来:
1
2
并且变量i1已经在线程间共享。这是一种交流形式,您可以共享类、结构字符串,任何您想要的东西。
注意:这段代码几乎肯定会导致线程竞争。这只是一个示例,在线程之间共享内存时,您应该始终使用同步和线程安全实践。
关于c++ - 我如何在线程之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12242207/