📄 testtask2.cpp
字号:
#include "os/OS.h"
#include "os/Synch_Traits.h"
#include "icc/Task.h"
#include "icc/ThreadManager.h"
#include "icc/MessageBlock.h"
#include "icc/Log.h"
#include <iostream>
using namespace std;
class MyTask1 : public Task<ACE_MT_SYNCH>
{
public:
virtual int svc (void)
{
while (1) {
MessageBlock* mb;
if(this->getq (mb) == -1)
break;
const char *db = mb->getDataBlock ();
int m = *((int *)db);
//cout << "recv data: " << m << endl;
LogMsg << "recv data: " << m << endl;
delete db;
delete mb;
}
return 0;
}
};
class MyTask2 : public Task <ACE_MT_SYNCH>
{
public:
MyTask2 (Task <ACE_MT_SYNCH> &task)
{
this->peerTask = task;
}
virtual int svc (void)
{
/*
char *buffer = new char[64];
memset (buffer, 0, 64);
strcpy (buffer, "hello,world");
MessageBlock *mb = new MessageBlock;
mb->setDataBlock (buffer);
this->peerTask.putq (mb);
*/
for (int i = 1000; i < 1020; i++) {
int* m = new int;
*m = i;
MessageBlock *mb = new MessageBlock;
mb->setDataBlock ((const char *)m);
this->peerTask.putq (mb);
LogMsg << "send data: " << i << endl;
ACE_OS::sleep (1);
}
return 0;
}
Task<ACE_MT_SYNCH> peerTask;
};
int main (int argc,char* argv[])
{
Log::instance() ->open("log.txt");
LogMsg << "start main " << endl;
MyTask1 task1;
MyTask2 task2 (task1);
task1.activate ();
task2.activate ();
ThreadManager::instance ()->wait ();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -