windows linux线程进程,C++多线程部分小结(Linux+Windows)

Linux

1.线程函数:pthread_create,

pthread_join

2.线程属性:绑定线程/非绑定线程;分离状态/非分离状态;优先级

3.线程数据:pthread_keycreate,

pthread_setpecific,同键值在不通的线程中值不同,觉得意义不大

4.同步:

l  互斥锁:内核对象,可以设置跨进程同步,pthread_mutex_t,pthread_mutex_init, pthread_mutex_lock, pthread_delay_unlock, pthread_mutex_destroy;fork下可以设置进程共享属性,实现匿名mutex跨进程(但这要求必须是父子进程才能都认识同一个mutex,没有找到windows下命名mutex那样的例子)

l  条件变量:pthread_cond_t,pthread_cond_wait,pthread_cond_signal,通常和mutex一起使用,pthread_cond_wait会解开锁并等待条件变量

l  信号量:sem_t,sem_init ,sem_wait,sem_post

l  其他:可以使用文件等共享资源作为同步标记,方法有很多

5.其他

l  pthread_cond_timedwait替代sleep, 可以随时触发或超时触发,和条件变量同时使用

Windows

1.线程函数:CreateThread,ExitThread (属于API), _beginthreadex,_endthreadex, _beginthread, SuspendThread, ResumeThread,GetCurrentThread不要使用CreateThread,因为beginthreadex多了一个线程数据块tiddata

2.线程属性:优先级——共6个级别,SetThreadPriority, GetThreadPriority

3.线程数据:Thread Local Storage,觉得TLS和Linux下的线程数据是一样的,其实只是在调用时更方便,同时也会造成程序一定程度的混乱

4.同步:

l  互斥锁mutex: CreateMutex,ReleaseMutex,内核对象,通过命名mutex可以实现跨进程的互斥;跨进程时,只有挂起mutex的进程才能release和多次挂起

l临界区Critical Sections:CRITICAL_SECTION,EnterCriticalSection,LeaveCriticalSection,轻量级用户态对象,只能用于进程内跨线程的同步

l  Event:CreateEvent,WaitForSingleObject/WaitForMutileObject,ResetEvent,自动对象/手动对象,内核对象,应该也可以通过命名event实现跨进程的同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值