多线程编程

参考:
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请求:

你可能感兴趣的:(多线程编程)