E007

调用orsci-art中的UDP,实现UDP聊天演示。

 

#pragma once

#include "jwThread.h"
using namespace orsci;

class TMyThread : public TThread
{
public:
TMyThread(const string & AVarName, const bool ACreateSuspended = true) : TThread(ACreateSuspended) {FVarName = AVarName;}
string FVarName;
public:
virtual unsigned long Execute() //!!注意!!:在Execute()函数内不要定义需要释放的对象变量,因为如果线程是被终止的,那么该对象无法被释放。一种替代方法是将其作为类的成员变量。那么类释放的时候,对象就会释放。
{
cout << idThread << "In MyThread" << endl;
if (is_FreeOnTerminated())
{
MessageBoxA(0, (FVarName + ":**自动释放对象**").c_str(), jw::IntToStr(idThread).c_str(), MB_OK);
}
else
{
MessageBoxA(0, (FVarName + ":**不是**自动释放对象").c_str(), jw::IntToStr(idThread).c_str(), MB_OK);
}
cout << "Now, " << FVarName << " : Execute()执行完毕" << endl;
return 0;
}
};


inline void Test_Thread()
{ //本函数演示,线程的执行!
cout << "E007:演示多线程执行...http://www.orsci.cn" << endl;

TMyThread a("aa", false), b("bb", false), c("cc", false);
a.Resume();
b.Resume();
c.Resume();

//注意:此处为了演示,必须在主线程等待,否则因主线程结束看不到子线程效果。当然,可以使用pause暂停一段时间!
cout << "good bye" << endl;
cout << "Any Key Exit ..." << endl;
char xpp;
cin >> xpp;
}


inline void Test_FreeOnTerminated()
{ //本函数演示线程的自动释放。在指针对象中特别有用。
//但是:自动释放的对象,要求在派生类中的析构函数中,不能执行任务东西。
//若确实需要在自定义的线程对象释放前,执行一些析构过程,请在继承OnFinished事件或者OnAfterExecute事件,然后在事件处理中完成释放工作。
cout << "E007:演示多线程执行(自动释放对象编程)...http://www.orsci.cn" << endl;

TMyThread a("a"), b("b"), c("c");
TMyThread * x, * y, * z;
x = new TMyThread("x", true); //首先挂起
y = new TMyThread("y", true);
//z =
x->SetFreeOnTerminated(true); //设置对象自动释放。
x->Resume(); //然后继续
y->SetFreeOnTerminated(true);
y->Resume();

a.Resume();

//注意:此处为了演示,必须在主线程等待,否则因主线程结束看不到子线程效果。当然,可以使用pause暂停一段时间!
cout << "good bye" << endl;
cout << "Any Key Exit ..." << endl;
char xpp;
cin >> xpp;
cout << a.getGlobalThreadCount() << endl;
cin >> xpp;
}

输出

(一)程序运行图

程序运行图.

 

(二)说明:

(1)由于Dialog是模式对话框,因此,如果是在一个线程中,则不可能同时显示;而现在利用多线程可以同时显示。

(2)多线程工作原理和使用方法,请参见书籍:姜维. 《分布式网络系统与Multi-Agent系统编程框架》

(3)orsci包支持多线程编程,提供TThread基础类,继承该类,然后重载Execute(),实现线程执行函数。可下载配套软件orsci进行应用。

书籍 姜维. 《分布式网络系统与Multi-Agent系统编程框架》
软件 orsci-art开发包(C++语言)。