C++ 之 并发编程基础
2021-04-30 01:28
标签:基础 使用 一个 round code detach ESS 并发编程 date 在C++线程库中提供一个 为了并发地运行函数,需要使用特定的函数以及对象来管理各个线程。C++在头文件 一个简单的Hello, Concurrent World程序: 其中 调用方法 线程在线程对象创建时启动,即构造线程 使用unique_lock或者lock_guard实现上锁。 C++ 之 并发编程基础 标签:基础 使用 一个 round code detach ESS 并发编程 date 原文地址:https://www.cnblogs.com/FlameBlog/p/14715406.htmlC++并发编程基础
native_handle()
成员函数,允许通过使用平台相关API直接操作底层实现。#include
std::thread
,可见仍属于std域;同时使用join
函数是为了保证t
线程执行完毕后main
主线程才结束。启动线程
std::thread
对象时便会启动。也就是说我们需要进行共享变量的设置才可以实现线程之间的相互控制。
std::thread my_thread(background_task); // 1
std::thread my_thread((background_task())); // 2
std::thread my_thread{background_task()}; // 3
t.detach(); //(分离式),new和current线程无关
t.join(); //(加入式),阻塞current线程,执行新线程
std::ref()
将数据转换为引用数据:std::thread t(update_data_for_widget,w,std::ref(data));
数据同步的安全性实现
std::mutex mt;
void addmethod(int a)
{
mt.lock();
addprocessing(...);
mt.unlock();
}
void deletemethod(int a)
{
mt.lock();
deleteprocessing(...);
mt.unlock();
}
std::mutex mt;
void addmethod(int a)
{
std::unique_lock<:mutex> lock(mt);
addprocessing(...);
}
void deletemethod(int a)
{
std::unique_lock<:mutex> l(mt);
deleteprocessing(...);
}
上一篇:数组的声明和创建
下一篇:如何配置JAVA环境变量