hi,欢迎访问本站!
当前位置: 首页学习笔记正文

absl教程(五):Synchronization library

用户投稿 学习笔记 11阅读

同步库包括用于跨不同线程管理任务的抽象和原语。该库包含以下头文件:

mutex.h 提供用于管理资源锁的原语。互斥锁是这个库中最重要的原语,也是大多数并发实用程序的构建块。 notification.h 提供一种简单的机制来通知线程事件。 barrier.h并blocking_counter.h 为累积事件提供同步抽象。

Abseilbase库还包括许多与并发相关的头文件:

base/thread_annotations.h 提供用于记录多线程代码的锁定策略的宏,并为滥用此类锁定提供警告和错误。 base/call_once.h 提供一个 Abseil 版本,std::call_once()用于在所有线程中只调用一次可调用对象。

本文档将涵盖上述所有内容。

同步概述

在顺序(即单线程)系统中,我们通常认为事件以特定的总顺序发生:对于任何操作 A 和 B,要么 A 发生在 B 之前,要么 B 发生在 A 之前。在并发系统中,这不再是情况:对于某些操作对,可能无法说哪个更早发生(即事件只是部分排序的),在这种情况下,我们说它们同时发生。请注意,此定义与它们是否“实际上”同时发生无关,而仅与我们是否可以保证它们不会发生有关。

如果在多线程环境中没有正确使用(或设计)并发操作可能会发生冲突,从而导致以下问题࿱

标签:
声明:无特别说明,转载请标明本文来源!
发布评论
正文 取消