ACE_Message_Queue源码剖析

来源:互联网 发布:tensorflow c 界面 编辑:程序博客网 时间:2024/06/06 01:59
       想到写这个是因为昨天看到Unix下服务器的模式,其中一种有一个线程用来accept,并将请求放在有界临界区中,其他工作线程池通过访问有界临界区获取请求,执行请求。所以就想追溯一下使用ACE_Message_Queue实现这种模式的可行性。对于ACE_Message_Queue其他功能不做深究。
       ACE函数看上有这么两种Function X和Function X_i。后面加上下划线表示操作,X实现就是先加锁,然后执行X_i。ACE_Message_Queue内部的数据结构并没有什么稀奇的,只是一个链表,所以关键还是探究在系统级别上,可能涉及到的效率问题。ACE_Message_Queue继承于ACE_Message_Queue_Base.
       相对来说ACE_Message_Queue_Base内容比较少,就像普通基类一样,定义了接口的标准。另外就是定义了MessageQueue的状态。
       对于ACE_Message_Queue来说,ACE_SYNCH_MUTEX_T lock_; ACE_SYNCH_CONDITION_T not_empty_cond_; ACE_SYNCH_CONDITION_T not_full_cond_;其实都是同样的一个lock;那么我们就来看看这个lock到底是什么?从ACE_MT_SYNCH的定义可知,所用的不过就是ACE_Thread_Mutex, ACE_Condition_Thread_Mutex,其中ACE_Condition_Thread_Mutex内部用的锁是ACE_Thread_Mutex,那么关键的效率问题就是ACE_Thread_Mutex的效率。追溯到内部,在Win32中用的是临界区,在Unix中使用的是Mutex,效率应该可以得到保证。对于ACE_Condition_Thread_Mutex,在Win32下使用的是WaitForSingleObject,在Posix下使用的是sem_wait,效率可以得到保证。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为荣耀10边框掉色了怎么办 网购商家打来无货怎么办 客户拍了不发货怎么办 天猫商家欺骗买家怎么办 阿里买家投诉我发空包怎么办 苹果6s电池坏了怎么办 hm买的单鞋脏了怎么办 微店违规屏蔽搜索怎么办 ios微信支付失效怎么办 京东第三方店铺关闭怎么办 京东店铺关门了怎么办 国美退款不到账怎么办 小米小店通过了怎么办 苹果的发票丢了怎么办 苹果7p开不开机怎么办 申请退款了怎么卖家还发货怎么办 买家申请退款卖家不退款怎么办 卖家恶意不退款怎么办 欠条到期了对方不还钱怎么办 冰箱磕了一坑怎么办 办信用卡没有家庭地址的怎么办 钱付了货没收到怎么办 在苏宁易购上买东西地址错了怎么办 手机分期付款银行卡丢了怎么办 华硕笔记本鼠标不动了怎么办 韵达快递不派送怎么办 中通快递不派送怎么办 农业银行信用卡密码输错三次怎么办 农业银行卡多次输错密码怎么办 想把店长弄走怎么办 济南银座卡过期了怎么办 银座购物卡丢失后怎么办 银座的卡丢了怎么办 银行卡换了旧卡怎么办 大理市民卡丢了怎么办 市民卡内的钱怎么办 宝付支付乱扣款怎么办 苏宁任性贷逾期怎么办 第二次跟家里开口要钱还网贷怎么办 网贷到家来要钱怎么办 网贷贷不了啦急要钱怎么办