21xrx.com
2024-11-08 21:22:39 Friday
登录
文章检索 我的文章 写文章
C++线程同步代码实例
2023-06-27 06:27:26 深夜i     --     --
C++ 线程同步 代码实例 互斥锁 条件变量

C++是一种非常强大的编程语言,可以用来开发各种应用程序,包括多线程程序。然而,在编写多线程程序时,需要注意线程同步问题,否则可能会出现严重的错误。

线程同步是指协调多个线程之间的操作,使得它们能够正确地共享数据和资源。在C++中,可以使用各种机制来实现线程同步,包括互斥锁、条件变量、信号量等。

下面是一个简单的C++线程同步代码实例,使用互斥锁来保证多个线程访问同一个资源时不会产生竞态条件。


#include <iostream>

#include <thread>

#include <mutex>

using namespace std;

mutex mtx;

void thread_func(int id)

{

  mtx.lock();

  // 这里是需要同步的代码区域

  cout << "Thread " << id << " is running." << endl;

  mtx.unlock();

}

int main()

{

  thread t1(thread_func, 1);

  thread t2(thread_func, 2);

  t1.join();

  t2.join();

  return 0;

}

在这个例子中,我们定义了一个全局的互斥锁对象mtx,然后在线程函数thread_func中对它进行加锁操作,并在需要同步的代码区域内输出线程的ID号。在代码区域执行完毕后,我们再对互斥锁进行解锁操作。

在main函数中,我们创建了两个线程t1和t2,并将线程函数thread_func和线程ID号作为参数传递给它们。然后,我们等待这两个线程完成其执行,并退出主线程。

这个例子演示了如何使用互斥锁来实现线程同步,并避免多个线程对同一个资源进行竞争。在实际应用中,线程同步是非常重要的,因为它可以避免竞态条件带来的不确定性和错误,确保多线程程序能够正确地执行。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复