我如何在线程之间进行通信

5 c++ multithreading

如何在C++中创建线程并在主线程和另一个线程之间进行通信?

一些代码示例将不胜感激.

Fan*_*Fox 2

线程与其作用域共享变量,这就是互斥锁如此重要的原因。

因此,您只需编辑两个线程共用的变量就可以轻松地进行通信:

#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 已在线程之间共享。这是一种通信形式,您可以共享类、结构、字符串,任何您想要的东西。

注意:此代码几乎肯定会导致线程竞争。这只是一个示例,在线程之间共享内存时,您应该始终使用同步和线程安全实践。