参考:
C++ 并发编程
线程
windsows多线程
- new thread(...)
linux 多线程:
- pthread_create
- pthread_join / pthread_detach
pthread_join 创建一个线程默认的状态是joinable,如果一个线程结束但没有被join,它的状态类似于进程中的zombie process,所以创建线程者应该pthread_join来等待线程运行结束;
pthread_detach(thread_id)将线程状态设置为detached,则线程运行结束后自动释放所有资源;
同步
- 互斥锁
- 条件变量
- 信号量
- 临界区
pthread_cond_t
pthread_cond_signal: 发送信号让另一个线程继续执行;
pthread_cond_wait: 暂时释放锁,允许另一个线程发送信号,收到信号后继续持锁;
- 使用
线程1:pthread_mutext_lock --> pthread_cond_signal pthread_mutex_unlock
线程2:pthread_mutext_lock --> pthread_cond_wait --> pthread_mutex_unlock
临界区,互斥量,信号量,事件的区别 (windows?)
参考:http://blog.csdn.net/bao_qibiao/article/details/4516196
criticalSection、mutex、semaphores、event
临界区:不能跨进程,跟mutex类似
互斥量:对同一个共享资源的单独访问而设计的
信号量:控制一个具有有限用户资源而设计的
事件:用来通知线程有一些事件已发生,从而启动后续任务的开始
URL请求: