⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testtask2.cpp

📁 ICC means Internet Communication Component,it has many classes and frameworks that help develop netw
💻 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 + -