基于ACE框架---C++多线程开发总结1,涉及 互斥量、读写锁、条件锁、基于条件锁的线程流水控制

本文对ACE使用的介绍不多,因网上ACE的资料很多,故不进行介绍,而仅使用

当使用多线程进行开发工作的时候,必然会涉及到对公有数据的读写处理。

如果多个线程同时访问某个公有变量,若大部分对其写操作,仅少部分对其读操作,则最好使用互斥量对此变量进行保护;若大部分对其读操作,少部分对其写操作,则最好使用读写锁对此变量进行保护。

使用1个线程触发另外1个或者多个线程使用最广泛的是条件锁。即某些线程因当前条件不满足使用条件锁进行休眠,还有1个线程通过接收用户的操作给条件锁发送信号,使其他某个线程由休眠转为运行状态。

多线程死锁。有线程PA、PB,有互斥量LA、LB,线程PA开始运行时首先获取LA,线程PB开始运行时首先获取LB,然后线程PA需要获取LB,而线程PB需要获取LA,此情况下将会产生死锁。有线程PA,有互斥量LA,线程开始运行时首先获取了LA,后期因某些操作又需要获取获取LA,这种情况下基于操作系统的不同而得到的结果不同,如在windows操作系统下不会产生死锁,而在linux系统下则会产生死锁。读写锁相反。

如何在多线程开发中降低多线程并发运行的等待时间,提高线程的执行效率是1个很大的问题?在C++23种设计模式中好像未提到多线程的具体设计方法。

方法1:以空间换取时间,降低线程之间的关联性,使每个线程获取到锁的时间、占用锁的时间尽可能的短

ACE_Thread_Mutex mux;
std::string tmp;
list<std::string> obj;
{
ACE_Guard< ACE_Thread_Mutex> gdSync(mux);
tmp = g_data;
}

方法2:还没有想出来


多线程的流水线控制(基于条件锁):此例仅1个线程触发另外1个的线程代码核心触发部分,可对其进行优化

代码1:公共部分

ACE_Thread_Mutex m_cond_mux;
ACE_Condition<ACE_Thread_Mutex> m_cond(m_cond_mux);


代码2:等待部分

while(1)
{
if(!条件
)
{
m_cond_mux.acquire();


m_cond.wait();


m_cond_mux.release();
}
//事件处理
}


代码3:触发部分

m_cond_mux.acquire();
if(条件)
{
m_cond.signal();
}
m_cond_mux.release();


ACE网络框架-文档资料.rar】压缩包中含有如下内容: ================================================== 【ACE源码】目录: ACE+TAO+CIAO-6.0.0.tar.bz2 ---------------------------------------------------------------------ACE自适配通信环境中文技术文档】目录: ACE自适配通信环境(代序).pdf ACE自适配通信环境中文技术文档 [2002年12月版].chm 上篇:ACE技术论文集.pdf 中篇:ACE程序员教程.pdf 下篇:ACE应用实例.pdf ---------------------------------------------------------------------C++网络编程全集】目录: C++ Network Programming, Volume 1:Mastering Complexity with ACE and Patterns.chm C++ Network Programming, Volume 1:Mastering Complexity with ACE and Patterns.pdf C++ Network Programming, Volume 2:Systematic Reuse with ACE and Frameworks.chm C++NP_v1-P193.ppt C++NP_v2-P298.ppt C++NP_v2-P383.ppt C++网络编程 卷1:运用ACE和模式消除复杂性-P328.pdf C++网络编程 卷2:基于ACE框架的系统化复用-P374.pdf --------------------------------------------------------------------- 【其它资料】目录: ACE-tutorial [英文版]-P306.pdf ACE-类继承关系.pdf ACE详细介绍-译文.pdf C++网络编程学习笔记(ACE).docx --------------------------------------------------------------------- ACE技术内幕:深入解析ACE架构设计与实现原理 [机械工业.2012年出版.带书签]-P333.pdf --------------------------------------------------------------------- ACE程序员指南:网络与系统编程的实用设计模式 [中国电力.2005年出版.带书签]-P374.pdf ================================================= 附送视频学习资料:[看雪论坛独家免费共享]の轩辕IT培训 Linux C++ 远程全科班 Boost ACE[无KEY 完整版] 该视频是很好的网络框架学习资源,关于ACE框架的视频在Module6中,还有Boost相关的讲解。 下载地址:https://pan.baidu.com/s/1kTDYnjD 【注:可能会失效,赶紧存入网盘】
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值