E003

调用orsci中的多线程,实现自定义线程。

 

// E003
//http://www.orsci.cn
//功能:演示多线程的基本操作

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>

using namespace std;

#include "orsciJWVCL.h"
using namespace orsci; //orsci包的命名空间。

class TA : public TThread
{
public:
TA(const bool ACreateSuspended = true) : TThread(ACreateSuspended) {}

public:
virtual unsigned long Execute() //线程执行函数
{ //子类需要重载该方法实现子线程的功能
cout << "[TA]TThread::Execute()!ThreadID= " << idThread << " handleThread = " << handleThread << endl;
for (int k = 0; k < 100; k ++)
{
if (FTerminated) return 0; //如果外界要求线程结束,则停止。
Sleep(300);
cout << "TA = " << k << endl;
}
return 0;
}
};

class TB : public TThread
{
public:
TB(const bool ACreateSuspended = true) : TThread(ACreateSuspended) {}

public:
virtual unsigned long Execute() //线程执行函数。
{
cout << "[TB]TThread::Execute()!ThreadID= " << idThread << " handleThread = " << handleThread << endl;
for (int k = 0; k < 100; k ++)
{
if (FTerminated) return 0; //如果外界要求线程结束,则停止。
Sleep(500);
cout << " ...TB = " << k << endl;
}
return 0;
}
};

int _tmain(int argc, _TCHAR* argv[])
{
cout << "E003:多线程的演示操作!http://www.orsci.cn" << endl;
cout << "后面发现TA和TB交替输出!" << endl;
{
TA a;
TB b;
a.Resume();
b.Resume();
for (int k = 0; k <= 60; k ++)
{
cout << "Time run ... " << k << " ..." << endl;
Sleep(1000);

}
//方式一:等待线程执行完毕
//a.Waitfor();
//b.Waitfor();
//方式二:结束线程的执行
a.Terminate(false);
b.Terminate(false);
}
cout << "Press any key to continue...";
char pp;
cin >> pp;
return 0;
}

输出

E003:多线程的演示操作!http://www.orsci.cn
后面发现TA和TB交替输出!
Time run ... [TA]TThread::Execute()!ThreadID= 1 handleThread = 00000088
[TB]TThread::Execute()!ThreadID= 2 handleThread = 0000008C
0 ...
TA = 0
...TB = 0
TA = 1
TA = 2
Time run ... 1 ...
...TB = 1
TA = 3
TA = 4
...TB = 2
TA = 5
Time run ... 2 ...
...TB = 3
TA = 6
TA = 7
...TB = 4
TA = 8
Time run ... 3 ...
...TB = 5
TA = 9
TA = 10
...TB = 6
TA = 11
TA = 12
Time run ... 4 ...
...TB = 7
TA = 13
...TB = 8
TA = 14
TA = 15
Time run ... 5 ...
...TB = 9
TA = 16
TA = 17
...TB = 10
TA = 18
Time run ... 6 ...
...TB = 11
TA = 19
TA = 20
...TB = 12
TA = 21
TA = 22
Time run ... 7 ...
...TB = 13
TA = 23
...TB = 14
TA = 24
TA = 25
Time run ... 8 ...
...TB = 15
TA = 26
TA = 27
...TB = 16
TA = 28
Time run ... 9 ...
...TB = 17
TA = 29
TA = 30
...TB = 18
TA = 31
TA = 32
Time run ... 10 ...
...TB = 19
TA = 33
...TB = 20
TA = 34
TA = 35
Time run ... 11 ...
...TB = 21
TA = 36
TA = 37
...TB = 22
TA = 38
Time run ... 12 ...
...TB = 23
TA = 39
TA = 40
...TB = 24
TA = 41
TA = 42
Time run ... 13 ...
...TB = 25
TA = 43
...TB = 26
TA = 44
TA = 45
Time run ... 14 ...
...TB = 27
TA = 46
TA = 47
...TB = 28
TA = 48
Time run ... 15 ...
...TB = 29
TA = 49
TA = 50
...TB = 30
TA = 51
TA = 52
Time run ... 16 ...
...TB = 31
TA = 53
...TB = 32
TA = 54
TA = 55
Time run ... 17 ...
...TB = 33
TA = 56
TA = 57
...TB = 34
TA = 58
Time run ... 18 ...
...TB = 35
TA = 59
TA = 60
...TB = 36
TA = 61
TA = 62
Time run ... 19 ...
...TB = 37
TA = 63
...TB = 38
TA = 64
TA = 65
Time run ... 20 ...
...TB = 39
TA = 66
TA = 67
...TB = 40
TA = 68
Time run ... 21 ...
...TB = 41
TA = 69
TA = 70
...TB = 42
TA = 71
TA = 72
Time run ... 22 ...
...TB = 43
TA = 73
...TB = 44
TA = 74
TA = 75
Time run ... 23 ...
...TB = 45
TA = 76
TA = 77
...TB = 46
TA = 78
Time run ... 24 ...
...TB = 47
TA = 79
TA = 80
...TB = 48
TA = 81
TA = 82
Time run ... 25 ...
...TB = 49
TA = 83
...TB = 50
TA = 84
TA = 85
Time run ... 26 ...
...TB = 51
TA = 86
TA = 87
...TB = 52
TA = 88
Time run ... 27 ...
...TB = 53
TA = 89
TA = 90
...TB = 54
TA = 91
Time run ... 28 ...
...TB = 55
TA = 92
...TB = 56
TA = 93
TA = 94
Time run ... 29 ...
...TB = 57
TA = 95
TA = 96
...TB = 58
TA = 97
Time run ... 30 ...
...TB = 59
TA = 98
TA = 99
...TB = 60

参考 姜维. 《分布式网络系统与Multi-Agent系统编程框架》。程序orsci开发包(C++语言)。