#include "ace/OS.h"
#include "ace/Task.h"
#include "ace/Message_Block.h"
//The Consumer Task.
class Consumer:
public ACE_Task<ACE_MT_SYNCH>
{
public:
int open(void*)
{
ACE_DEBUG((LM_DEBUG, "(%t) Consumer task opened \n"));
//Activate the Task
activate(THR_NEW_LWP,1);
return 0;
}
//The Service Processing routine
int svc(void)
{
//Get ready to receive message from Producer
ACE_Message_Block * mb =0;
do
{
mb=0;
//Get message from underlying queue
getq(mb);
ACE_DEBUG((LM_DEBUG,
"(%t)Got message: %d from remote task\n",*mb->rd_ptr()));
}while(*mb->rd_ptr()<10);
return 0;
}
int close(u_long)
{
ACE_DEBUG((LM_DEBUG,"Consumer closes down \n"));
return 0;
}
};
class Producer:
public ACE_Task<ACE_MT_SYNCH>
{
public:
Producer(Consumer * consumer):
consumer_(consumer), data_(0)
{
mb_=new ACE_Message_Block((char*)&data_,sizeof(data_));
}
int open(void*)
{
ACE_DEBUG((LM_DEBUG, "(%t) Producer task opened \n"));
//Activate the Task
activate(THR_NEW_LWP,1);
return 0;
}
//The Service Processing routine
int svc(void)
{
while(data_<11)
{
//Send message to consumer
ACE_DEBUG((LM_DEBUG,
"(%t)Sending message: %d to remote task\n",data_));
consumer_->putq(mb_);
//Go to sleep for a sec.
ACE_OS::sleep(1);
data_++;
}
return 0;
}
int close(u_long)
{
ACE_DEBUG((LM_DEBUG,"Producer closes down \n"));
return 0;
}
private:
char data_;
Consumer * consumer_;
ACE_Message_Block * mb_;
};
int main(int argc, char * argv[])
{
Consumer *consumer = new Consumer;
Producer * producer = new Producer(consumer);
producer->open(0);
consumer->open(0);
//Wait for all the tasks to exit.
ACE_Thread_Manager::instance()->wait();
return 0;
}
分享到:
相关推荐
深入解析ace架构设计与实现原理》从构架模式、编程示例和源代码3个维度系统地对经典网络框架ace(adaptivemunicationenvironment)的架构设计和实现原理进行了深入分析,它能解决4个方面的问题:,帮助框架设计者...
精通ACE,必读书第第三本:ACE程序员指南:网络与系统编程的实用设计模式
ACE和设计模式结合一些资料,希望大家能用上
ACE程序员指南 网络与系统编程的实用设计模式 part2
通过ace来实现ftp客户端功能,ace自身不带有这些功能的,对需要ace实现ftp功能的朋友挺有作用的。
ACE程序员指南-网络与系统编程的实用设计模式.pdf ACE程序员的编程参考宝典,重要性不多说。
ACE网络编程模式比较,简单易懂,ACE的入门级读物
在C++中使用ACE实现广播通信的简单小程序
ACE实现SSDP
ACE程序员指南 网络与系统编程的实用设计模式 part1
C++的深入解析ACE架构设计与实现原理的源代码资料
这里面是ACE并行网络开发模式的全集,格式为CHM,方便阅读。对开发网络应用程序有很强的参考性。
ACE程序员指南:网络与系统编程的使用设计模式,高并发网络编程
QT+ACE实现简单的TCP客户端,用的是VS2008开发工具
利用ACE实现了网络通信中客户端与服务器之间的通信,方便相关开发者使用参考。
C++网络编程 卷1 运用ACE和模式消除复杂性 作 者:(美)施密特 ,(美)休斯顿 著 叶斌 译 出 版 社:科学出版社 出版时间:2012-01-01
ACE程序员指南-网络与系统编程的实用设计模式
实现Ace Admin Tab页功能 ,下载后解压缩,在IIS中添加,请用http方式访问