多进程间通信方式和多线程同步机制总结

多进程之间通信方式:

          文件映射:本地之间

          共享内存:本地之间

          匿名管道:本地之间

          命名管道:跨服务器

          邮件槽:一对多的传输数据,通常通过网络向一台Windows机器传输

          剪切板:本地之间

          socket:跨服务器

多线程之间通信方式:

          全局变量

          自定义消息响应

多线程之间同步机制:

          临界区:不可以跨进程,忘记解锁会无限等待,要么存在要么没有,多线程访问独占性共享资源

          互斥量:可以跨进程,忘记解锁会自动释放,要么存在要么没有

          事件:又叫线程触发器,不可以跨进程,要么存在要么没有,一个线程来唤醒另一个线程(包括自动和人工两种方式)

          信号量:可以跨进程,始终代表可用资源数量,当资源数为o时,线程阻塞,允许多个线程同时访问一个共享资源

多线程程序:

          多线程程序是并发执行,对于多线程的共用资源不能保证能被正确利用即不保证能被独占,并发执行的时候,哪个线程得到运行的机会是随机的也是不可预期。为了解决

多线程中某个线程对资源的独占(也就是多线程同步问题),只允许一个线程拥有共享资源的独占。即多线程之间的同步机制。

线程:

           线程包括两个方面:第一:线程内核对象(OS用来存放统计信息的地方);第二:线程堆栈(函数参数和局部变量)

           线程在它的进程的地址空间执行代码。内核对象句柄依赖于进程而存在。

           创建线程函数后建议立刻关闭句柄closehandle();

Windows API中提供了建立新的线程的函数CreateThread:

            MSDN中CreateThread原型:

             HANDLE CreateThread(
 
             LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程安全属性
            
             DWORD dwStackSize, // 堆栈大小
            
              LPTHREAD_START_ROUTINE lpStartAddress, // 线程函数
            
             LPVOID lpParameter, //线程参数
            
             DWORD dwCreationFlags, // 线程创建属性
            
             LPDWORD lpThreadId // 线程ID
             );

 返回值:

             在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值