8 非同步操作

2021-06-18 09:20:00 字數 1563 閱讀 6222

對於遊戲開發而言,經常使用到非同步相關操作,因此在使用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...