打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++:多线程类库的设计与实现(八)完

面向对象的多线程编程

我们用一个简单的例子来结束这个编程系列。我们用C++类库重写一开始的例子。

//----test1.cpp----

#include <cstdio>

#include <Thread.h>

volatile bool g_iQuitFlag = false;

class MyTask1 : public Thread {

private:

void Run() {

for(;!g_iQuitFlag;) {

printf("I am alive.\n");

Thread::Sleep(3000);

}

}

};

class MyTask2 : public Thread {

public:

static const int MAX_I = 65534;


private:

int Sum(int n) {

if(n==0) {

return 0;

} else {

return n + Sum(n-1);

}

}


void Run() {

for(int i=1; (!g_iQuitFlag) && (i<MAX_I); ++i) {

int sum = Sum(i);

printf("Sum(1-->%d) = %d.\n", i, sum);

Thread::Sleep(2000);

}

}

};

int main()

{

MyTask1 task1;

MyTask2 task2;

task1.Start();

task2.Start();

char szBuf[1024];

while(true) {

fgets(szBuf, sizeof(szBuf), stdin);

if(0 == strncmp(szBuf, "quit", 4)) {

g_iQuitFlag = true;

break;

}

}

return 0;

}

//----EOF----

这个程序的功能和前面的C版本相同,但是C++类库让我们免于处理平台相关细节,从而使得编程简化。

另外,类似上面的例子并不能做很多事情,因为我们还不具备有效的手段来控制线程间的同步与互斥。多线程同步设计是多线程设计的重点工作之一,它的核心思想是,在必要情况下将并行处理串行化。关于同步与互斥的话题,我们将在另一个系列中对其进行详细讨论。 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python多线程编程
C# 看懂这100+行代码,你就真正入门了(经典)
5天玩转C#并行和多线程编程
4.0中的并行计算和多线程详解(二)
C++使用thread类多线程编程
C#高级
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服