對於遊戲開發而言,經常使用到非同步相關操作,因此在使用moduleframework之前應該提供乙個非同步操作的類。 以後相關的非同步操作均繼承這個類
asyncoperation:
先貼出**:
#ifndef __async_operation_h__
#define __async_operation_h__
#include class asyncoperation
virtual asyncoperation(){}
void execute(typeoncomplete oncomplete, typeonaborted onaorted = null)
virtual void abort()
void complete()
private:
typeonexecute _onexecute;
typeoncomplete _oncomplete;
typeonaborted _onaborted;
};#endif
真正的執行函式是execute 另外提供了乙個完成 和終止的介面。
這個類應該比較簡單。
在此類的基礎上構建乙個非同步佇列。 asyncqueue繼承該類
#ifndef __async_queue_h__
#define __async_queue_h__
#include #include "asyncopertaion.hpp"
#include #include using namespace std;
class asyncqueue : public asyncqueue
~asyncqueue()
}// 加入佇列
void push(asyncoperation* operation)
// 終止執行
void abort()
private:
void executenextchild(asyncoperation* operation)
// 迭代執行_queue中的操作
asyncoperation* front = _queue.front();
front->execute(boost::bind(&asyncqueue::onchildcomplete, this, _1));
}void onchildcomplete(asyncoperation* operation)
if (_abortflag && _onaborted)
else
}private:
typedef dequetypeoptqueue; // 使用佇列來包裝
typeoptqueue _queue;
bool _abortflag;
};#endif
這裡乙個巧妙指出在於 如果迭代執行整個非同步佇列, 注意看 建構函式和onexecutenextchild 這兩點 。
至此我們構建了乙個初步的非同步佇列。以後其他各個模組均繼承他們。 比如模組的初始化等
android非同步操作
1 要實現非同步操作就要用到android提供乙個asynctask類,這個類是乙個泛型。下面附上我的 我直接在 中說明 package com.example.async2 import android.os.asynctask import android.view.view import an...
Dart 非同步操作
dart 語言是目前少數幾個支援非同步操作的語言。一般使用async函式和await表示式實現非同步操作。dart 庫提供asynchronous的功能。該功能提供介面來進行耗費時間的操作,二呼叫的主 不用等待耗時操作執行完成後才進行操作。該功能返回future或stream物件。使用了async或...
Python 非同步操作
依賴的包 from pubsub import pub from threading import thread核心 class scrapethread thread def init self,event 執行緒例項化時立即啟動 thread.init self super scrapethre...