简介
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为例来介绍
条件变量
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 为例
state_:用于表示条件是否满足,为1表示条件成立
本地存储
asio实现了不同平台的本地存储,并且使用别名来统一本地存储,主要有
- posix_tss_ptr
- win_tss_ptr
- keyword_tss_ptr
- null_tss_ptr
tss_ptr 根据平台继承上面不同平台的实现
以posix_tss_ptr为例