线程与其作用域共享变量,这就是互斥锁如此重要的原因。
因此,您只需编辑两个线程共用的变量就可以轻松地进行通信:
#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;
}
Run Code Online (Sandbox Code Playgroud)
这应该打印出:
1
2
Run Code Online (Sandbox Code Playgroud)
并且变量 i1 已在线程之间共享。这是一种通信形式,您可以共享类、结构、字符串,任何您想要的东西。
注意:此代码几乎肯定会导致线程竞争。这只是一个示例,在线程之间共享内存时,您应该始终使用同步和线程安全实践。
| 归档时间: |
|
| 查看次数: |
13238 次 |
| 最近记录: |