分布式队列和动态任务调度器的设计接口

分布式队列和动态任务调度器的设计接口

ID:40811693

大小:2.95 MB

页数:14页

时间:2019-08-08

分布式队列和动态任务调度器的设计接口_第1页
分布式队列和动态任务调度器的设计接口_第2页
分布式队列和动态任务调度器的设计接口_第3页
分布式队列和动态任务调度器的设计接口_第4页
分布式队列和动态任务调度器的设计接口_第5页
资源描述:

《分布式队列和动态任务调度器的设计接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、6.线程池的实现共享资源计算的分解共享资源的设计思路1.线程分组竞争模式2.线程随机竞争模式3.条件同步模式4.批量私有化处理模式5.数据本地化相关解决思路的数据结构:1.串行队列,环行队列(缺点:空间不足时,重新扩大空间后需要复制数据,复制大量数据很费时间),2.有既能将队列动态扩大,又不需要复制数据的队列结构吗?动态环行队列:多个环行队列组成的缘故动态环行队列。(用于管理内存碎片)上面这两种队列都是适用于单个线程内使用的情形。如果有多个线程要操作队列,上述队列是不能提供数据竞争的安全的。要想让队列在多个线程操作的情形下取得安全,必须使用

2、加锁、解锁等同步操作。3.支持同步的共享队列(1)要理解竞争资源(硬件、软件(变量,队列,数组,链表等))线程,资源竞争,信号量,互斥、同步,锁,原子操作共享队列的进队和出队操作仅仅是在串行队列的进队和出队基础上进行了锁保护,队列判空和满时也必须加锁,以避免线程同时操作串行队列内的数据结构。4.偷取的共享队列(队列判空和满时不必须加锁)设置两个标志变量来表示队列为空和满,使用原子操作改变标志变量的值。在分布式队列和任务调度器的设计和实现中需要用到偷取的共享队列。5.队列池如何避免共享队列资源的集中式锁竞争的现象?解决方案:队列池。将一个队列

3、变成多个子队列,每个子队列带一把锁,多个共享子队列组成的复合数据结构称为队列池。队列池的操作有:单进单出操作、多进多出操作线程分组竞争模式,线程随机竞争模式队列池的优点:缩减了队列空满判断时的同步操作缺点:无法减少进队和出队操作中的同步操作,解决方案:分布式队列7.分布式队列的设计和实现主要思想是,共享数据本地化,线程池。带有私有化操作的分布式队列7.多核下任务调度器静态任务图调度器动态任务调度非嵌套任务调度任务分组任务分组调度嵌套任务调度请大家自学C++模板设计方案1.设计并实现一个自动释放锁功能的类CScopedLock(已经有代码,大

4、家会用就可以)接口如下:(1)设计并实现一个可以获取和释放锁功能的类CFastLock#defineFASTLOCKCRITICAL_SECTION#defineFastLockInit(x)InitializeCriticalSection(x)#defineFastLockAcquire(x)EnterCriticalSection(x)#defineFastLockTryAcquire(x)TryEnterCriticalSection(x)#defineFastLockRelease(x)LeaveCriticalSection(x

5、)#defineFastLockClose(x)DeleteCriticalSection(x)classCFastLock{private:FASTLOCKm_Lock;public:CFastLock();~CFastLock();voidAcquire();intTryAcquire();voidRelease();voidRelease(UINTuType){};//空的函数,主要是保持和CScopedLock类的兼容性};CFastLock::CFastLock(){FastLockInit(&m_Lock);}CFastLock

6、::~CFastLock(){FastLockClose(&m_Lock);}voidCFastLock::Acquire(){FastLockAcquire(&m_Lock);}intCFastLock::TryAcquire(){intnRet;nRet=FastLockTryAcquire(&m_Lock);returnnRet;}voidCFastLock::Release(){FastLockRelease(&m_Lock);}(1)在CFastLook的基础上,实现CScopedLocktemplateclass

7、CScopedLock{private:T*m_pLock;UINTm_uType;public://构造函数为CFastLock,CSpinLock而使用CScopedLock(T&l):m_uType(0){m_pLock=&l;m_pLock->Acquire();};//下面的构造函数主要为读写锁CRWLock而使用CScopedLock(T&l,UINTuType):m_uType(uType){m_pLock=&l;m_pLock->Acquire(uType);};~CScopedLock(){if(m_pLock!=NULL

8、){if(!m_uType){m_pLock->Release();}else{m_pLock->Release(m_uType);}}};};1.串行环行队列接口(T表示队列中

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。