asio之互斥量,条件变量和本地存储封装

简介

asio对于封装了多线程中的线程,互斥量,条件变量以及本地存储,线程在asio之thread已有介绍,本方只介绍互斥量,条件变量和本地存储

互斥量

asio实现了不同平台的互斥量,并且使用别名来统一互斥量,主要有

  • posix_mutex
  • win_mutex
  • std_mutex
  • null_mutex

#if !defined(BOOST_ASIO_HAS_THREADS)
typedef null_mutex mutex;
#elif defined(BOOST_ASIO_WINDOWS)
typedef win_mutex mutex;
#elif defined(BOOST_ASIO_HAS_PTHREADS)
typedef posix_mutex mutex;
#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
typedef std_mutex mutex;
#endif

以posix_mutex为例来介绍

posix_mutex
- pthread_mutex_t mutex_
+posix_mutex()
+~posix_mutex()
+void lock()
+void unlock()

条件变量

asio实现了不同平台的条件变量,并且使用别名来统一条件变量,主要有

  • posix_event
  • win_event
  • std_event
  • null_event
#if !defined(BOOST_ASIO_HAS_THREADS)
typedef null_event event;
#elif defined(BOOST_ASIO_WINDOWS)
typedef win_event event;
#elif defined(BOOST_ASIO_HAS_PTHREADS)
typedef posix_event event;
#elif defined(BOOST_ASIO_HAS_STD_MUTEX_AND_CONDVAR)
typedef std_event event;
#endif

以posix_event 为例

posix_event
- pthread_cond_t cond_
- size_t state_
+posix_event()
+~posix_event()
+void signal(Lock& lock)
+void signal_all(Lock& lock)
+void unlock_and_signal_one(Lock& lock)
+bool maybe_unlock_and_signal_one(Lock& lock)
+void clear(Lock& lock)
+void wait(Lock& lock)

state_:用于表示条件是否满足,为1表示条件成立

本地存储

asio实现了不同平台的本地存储,并且使用别名来统一本地存储,主要有

  • posix_tss_ptr
  • win_tss_ptr
  • keyword_tss_ptr
  • null_tss_ptr
    tss_ptr 根据平台继承上面不同平台的实现
    以posix_tss_ptr为例
posix_tss_ptr<T>
- pthread_key_t tss_key_
+posix_tss_ptr()
+~posix_tss_ptr()
+operator T*()
+void operator=(T* value)
tss_ptr<T>
  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值