
该系列实际上是“ Boost库完整开发指南”的阅读说明. 代码没有按照本书中的方法运行,因此我切换到Ubuntu进行学习. 可以使用apt-get install命令直接安装在Ubuntu下的boost库安装. 您需要安装libboost-dev libboost-system libboost-thread

我们直接进入代码并通过解释代码来学习. 一方面,请参阅原始书以获取更多详细内容,在此不再赘述;另一方面,比起长时间甚至没有几行代码的阅读书,首先运行代码更具学习动机.

#include <boost/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <string>
#define BOOST_DATE_TIME_SOURCE
#define BOOST_THREAD_NO_LIB
using namespace boost;
int main()
{
mutex mu;
{
mutex:: scoped_lock lock(mu);
thread t1(print, std::string("Hello,"));
t1.join();
}
{
mutex:: scoped_lock lock(mu);
thread t2(print, std::string("boost!"));
t2.join();
}
std::cout << std::endl;
return 0;
}

mutex是最简单且最常用的互斥变量,但是如果手动编写代码以保持互斥状态繁琐且容易出错,则boost库会提供一系列RAII类型的lock_guard类来自动执行这些任务. 互斥锁类中的scope_lock类就是其中之一. 顾名思义,其类对象根据作用域解锁互斥对象. 使用范围中的互斥体初始化scope_lock对象,并且互斥体被锁定;离开范围后boost mutex 赋值boost mutex 赋值,将自动调用scope_lock类的析构函数以解锁互斥锁.

线程对象接受一个函数和该函数的参数作为构造线程的构造函数的参数. 该线程负责使用相应的参数调用指定的函数. 然后调用线程对象的join方法来阻塞主线程,直到子线程完成为止,以免在主线程过早结束时销毁所有子线程,以使该线程为时已晚.
这里是一个简短的解释,下次见!
增强并发编程(1)-互斥锁
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-175089-1.html
仅凭“可能有”就随便入侵一个国家
那些无节操大队都跑哪去了