排序:
默认
按更新时间
按访问量

zthread学习 实例十二 ZThread库基本结构的规纳

 1、四大基类 CancelableCancelable提供了通用的方法来定义语义,调用了cancel()的Cancelable对象,将被置为disable。调用过cancel()ed的对象不必立即中止工作。通常被cancel()ed的对象尽可能快的继续执行完当前分配给它的工作,然后再变得不可用;...

2011-06-03 16:40:00

阅读数:2315

评论数:0

zthread学习 实例十一 信号量机制

ZThread库提供了另外一种同步机制——信号量,它定义了两种信号量:Semaphore(带上界) 和 CountingSemaphore(不带上界),都类似于传统的信号量,下面例子说明了其用法:#include "stdafx.h"#include "Displa...

2011-06-03 11:26:00

阅读数:1956

评论数:0

zthread学习 实例十 线程间的协助(四)——读者、写者

FairReadWriteLock BiasedReadWriteLock

2011-06-01 14:44:00

阅读数:1248

评论数:0

zthread学习 实例十 线程间的协助(三)——死锁

同时满足以下4种条件,死锁就会发生: 1、相互排斥。线程使用的资源至少有一个必须是不可共享的。在这种情况下,一根筷子一次只能被一个哲学家使用。 2、至少有一个线程必须持有某一种资源,并且同时等待获得正在被另外的线程所持有的资源。也就是说要发生死锁一个哲学家必须持有一根筷子并且等待另一根筷子。 ...

2011-05-31 21:43:00

阅读数:2116

评论数:0

zthread学习 实例十 线程间的协助(二)

生产者-消费者 广播

2011-05-31 19:44:00

阅读数:6185

评论数:0

zthread学习 实例十 线程间的协助(一)

线程间协作:多个线程一起工作来共同解决某个问题(问题的某一部分必须在另一部分被解决之前解决完毕)

2011-05-30 14:18:00

阅读数:1448

评论数:0

zthread学习 实例九 任务终止(二)——中断方式

终止一个阻塞线程和终止一个非阻塞线程的方式

2011-05-27 17:37:00

阅读数:2036

评论数:0

zthread学习 实例七 线程本地存储

消除任务在共享资源上发生冲突问题的第二种方法是 消除共享变量,对使用同一个变量的不同线程,可以为同一个变量创建不同的存储单元。因此,如果有5个线程使用一个含有变量x的对象,线程本地存储会自动为变量产生5个不同的存储单元。

2011-05-22 17:50:00

阅读数:1448

评论数:0

zthread学习 实例六 访问控制

Guard模板很方便的定义了同步机制,它在创建时用acquire()来获得一个Lockable对象,被销毁时用release()来释放这个锁。Guard对象的创建很好的利用了变量作用域概念。

2011-05-22 16:46:00

阅读数:1522

评论数:0

zthread学习 实例五 非任务对象的生存期

在使用线程处理时,必须确保非任务对象在任务需要它们的时候长期保留在活动状态,如果在任务完成之前,那些被任务使用的非任务对象已经被销毁,此时会导致非法访问存储单元。因此,那些被共享的非任务对象总要在堆中new出来,并且确保没有其他任务对象引用它时才动态销毁,此时就是引用计数。 ZThread库有一个...

2011-05-22 11:27:00

阅读数:1242

评论数:0

zthread学习 实例四 让步、休眠、优先级

1、让步 Thread::yield()可以介入CPU的调度,使CPU强制放弃执行当前线程。 2、休眠 Thread:sleep()可以使线程停止执行一段时间。 Thread:sleep()可发抛出一个Interrupted_Exception,该异常必须在run(...

2011-05-21 23:10:00

阅读数:1927

评论数:0

zthread学习 实例三 使用Executor器来执行线程

Executor的种类,一个Executor对象,知道如何创建合适的语境来执行Runnable对象,不同的Executor对象有不同的任务执行方式,Executor是一个虚基类,其下派生了四种执行器: 1、ThreadedExecutor:该执行器为每一个任务创建一个线程,当任务过多时,会导...

2011-05-21 22:16:00

阅读数:2760

评论数:0

zthread学习 实例二

关于任务的结束:我们有一个CDisplayTask* pTask这样的任务指针,似乎我们可以在任务结束后使用delete来终止该任务,但这样会使程序变得不可靠,因为我们在销毁任务时,它可能正在做某些重要的处理。 由任务自己决定什么时候结束是最安全的。可以设一个标志,任...

2011-05-21 21:15:00

阅读数:1448

评论数:0

zthread学习 实例一

分配给线程的任务必须是从堆中创建的 【Thread t(new LiftOff(5,i));】,而且通过new出来的任务不需要我们管理,Thread会自己管理该任务,当该任务的引用计数为0时,自动delete该任务。 还可以看到: for (int i = 0; i

2011-05-21 09:48:00

阅读数:1539

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭