摘要:
等待一个事件 在多线程开发中,当一个线程的运行条件是另外一个线程的运算结果的时间,等待线程通常有几种处理方法1. 循环查询,知道满足条件为止 2. 休眠一个固定的时间,然后查询条件,当不满足的时候再继续休眠相同时间,知道下一次查询满足条件 3. 使用条件变量 下面分别对后两种方法进行阐述 休眠固定时 阅读全文
摘要:
保护共享数据的替代措施 互斥量是保护数据的一种通用错失,但并不是唯一错失,这里有很多的替代方法可以在一些特定的情况下,提供更加合适的保护 共享数据初始化过程的保护 假设对于一个共享源,构造的代价非常昂贵,在单线程中,通常采用延迟初始化的方法例子如下; shard_ptr<resource> reso 阅读全文
摘要:
使用互斥量保护共享数据 C++中使用互斥量 C++通过实例化std::mutex创建互斥量,通过调用成员函数lock()进行加锁,unlock()进行解锁,在实践中不推荐直接调用成员函数,因为调用成员函数就意味着,必须记住在每个函数的出口都需要调用unlock(),同时包括异常的情况,C++中推荐使 阅读全文