mFrame
載入中...
搜尋中...
無符合項目
ufm::util::PFuture 類別 參考文件

[Class] 可處理的 Future 實作類別 更多...

#include <PFuture.h>

類別ufm::util::PFuture的繼承圖:
ufm::lang::Object ufm::util::Future< int > ufm::lang::Interface ufm::io::CompletionHandler< int >

公開方法(Public Methods)

 PFuture (void)
 構造一個新的 PFuture 物件
 
virtual ~PFuture (void) override
 銷毀 PFuture 物件
 
template<typename E >
 operator const Future< E > & (void) const
 PFuture 轉換為 Future<E> 的常量引用
 
template<typename E >
 operator Future< E > & (void)
 PFuture 轉換為 Future<E> 的引用
 
virtual bool get (int &result, int timeout) override
 獲取異步操作的結果
 
virtual bool setWait (void) override
 Future 設置為等待狀態
 
virtual bool waitDone (int timeout) override
 等待異步操作完成
 
virtual void clear (void) override
 清除 Future 的狀態
 
virtual ufm::util::FutureStatus getStatus (void) override
 獲取當前 Future 的狀態
 
virtual void completed (int &result, void *attachment) override
 處理異步操作完成的回調
 
virtual void failed (void *attachment) override
 處理異步操作失敗的回調
 
bool isBusy (void) const
 檢查 Future 是否處於忙碌狀態
 
int syncWrite (ufm::io::OutputStream &outputStream, ufm::lang::Readable &readable, int timeoutMs=5000)
 執行帶超時的同步寫入操作
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (void) override
 取得對應的 Object 物件
 
void delay (int milliseconds) const
 延遲指定的毫秒數進行執行緒等待
 
bool equals (Object *object) const
 判斷與另一物件是否為相同參照(指標型態比較)
 
bool equals (Object &object) const
 判斷與另一物件是否為相同參照(參照型態比較)
 
void wait (void) const
 使當前線程等待直到被通知
 
bool wait (int timeout) const
 等待通知或超時
 
bool yield (void) const
 讓執行緒讓渡控制權給同優先權的下一個執行緒
 
int lock (void) const
 核心鎖定,鎖定期間禁止線程切換
 
int unlock (void) const
 核心解鎖
 
ufm::sys::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 
- 公開方法(Public Methods) 繼承自 ufm::util::Future< int >
bool get (int &result)
 獲取非同步操作結果,無超時限制
 
bool waitDone (void)
 等待非同步操作完成,無超時限制
 
bool isDone (void)
 檢查操作是否已完成(無論成功或失敗)
 
bool isCompleted (void)
 檢查操作是否已成功完成
 
bool isFailed (void)
 檢查操作是否已失敗
 
bool isIdle (void)
 檢查操作是否處於閒置狀態
 
bool isBusy (void)
 檢查操作是否處於忙碌(等待)狀態
 

保護方法(Protected Methods)

void setCompleted (void)
 Future 標記為已完成狀態
 
void setFailed (void)
 Future 標記為失敗狀態
 

詳細描述

[Class] 可處理的 Future 實作類別

PFuture 提供了異步操作結果處理的具體實作,繼承自 Future<int> 介面。 它管理異步操作的狀態、結果值和執行緒,支援完成回呼和失敗處理機制。

此類別實作了 CompletionHandler<int> 介面,可以作為異步操作的回呼處理器使用, 同時提供等待、超時和狀態查詢等功能,適用於 I/O 操作和其他異步任務的結果管理。

// 與 OutputStream 進行異步寫入的典型用法
#include "ufm/io/SimpleOutputStream.h"
#include "ufm/util/PFuture.h"
PFuture future;
SimpleOutputStream outputStream;
ByteArrayReadable data("Hello World");
// 啟動異步寫入操作
if (outputStream.write(data, future)) {
// 等待寫入完成 (最多等待 5 秒)
if (future.waitDone(5000)) {
int bytesWritten;
if (future.get(bytesWritten, 0)) {
System::out().println("成功寫入 ").println(bytesWritten).println(" 字節");
}
} else {
System::out().println("寫入操作超時");
}
} else {
System::out().println("無法啟動寫入操作,輸出流可能忙碌中");
}
[Class] 可處理的 Future 實作類別
Definition PFuture.h:76
virtual bool waitDone(int timeout) override
等待異步操作完成
virtual bool get(int &result, int timeout) override
獲取異步操作的結果
1.0.0

建構子與解構子說明文件

◆ PFuture()

ufm::util::PFuture::PFuture ( void )

構造一個新的 PFuture 物件

初始化 PFuture 為初始狀態,設定結果值為 0,狀態為 NONE,執行緒指標為 nullptr

◆ ~PFuture()

virtual ufm::util::PFuture::~PFuture ( void )
overridevirtual

銷毀 PFuture 物件

釋放相關資源並執行清理操作,不會影響關聯的執行緒

函式成員說明文件

◆ clear()

virtual void ufm::util::PFuture::clear ( void )
overridevirtual

清除 Future 的狀態

重置 Future 的狀態,清除結果和相關資源,使其可以重新使用。 調用此方法後,Future 將回到初始狀態。

實作 ufm::util::Future< int >.

◆ completed()

virtual void ufm::util::PFuture::completed ( int & result,
void * attachment )
overridevirtual

處理異步操作完成的回調

當異步操作成功完成時,此方法會被調用。 它會設置結果值並更新 Future 的狀態為 COMPLETED。

參數
result操作的結果值
attachment附加數據(可為 nullptr)
此方法通常由執行異步操作的執行緒或框架調用

實作 ufm::io::CompletionHandler< int >.

◆ failed()

virtual void ufm::util::PFuture::failed ( void * attachment)
overridevirtual

處理異步操作失敗的回調

當異步操作失敗時,此方法會被調用。 它會更新 Future 的狀態為 FAILURE,並進行相應的清理。

參數
attachment附加數據(可為 nullptr)
此方法通常由執行異步操作的執行緒或框架調用

實作 ufm::io::CompletionHandler< int >.

◆ get()

virtual bool ufm::util::PFuture::get ( int & result,
int timeout )
overridevirtual

獲取異步操作的結果

嘗試獲取 Future 的執行結果,如果操作尚未完成,會等待指定的超時時間

參數
result用於存儲結果的引用
timeout等待超時時間(毫秒)
傳回值
bool 獲取結果的操作狀態 • true - 成功獲取結果 • false - 操作尚未完成或發生錯誤

實作 ufm::util::Future< int >.

◆ getStatus()

virtual ufm::util::FutureStatus ufm::util::PFuture::getStatus ( void )
overridevirtual

獲取當前 Future 的狀態

傳回值
ufm::util::FutureStatus 當前的 Future 狀態 • NONE - 初始狀態或已清除 • WAIT - 等待操作完成 • COMPLETED - 操作成功完成 • FAILURE - 操作失敗

實作 ufm::util::Future< int >.

◆ isBusy()

bool ufm::util::PFuture::isBusy ( void ) const

檢查 Future 是否處於忙碌狀態

判斷 Future 是否正在等待異步操作完成,用於在啟動新操作前檢查狀態

傳回值
bool Future 的忙碌狀態 • true - Future 正在處理異步操作 • false - Future 空閒,可以接受新操作
PFuture future;
SimpleOutputStream stream;
ByteArrayReadable data("test data");
if (!future.isBusy()) {
stream.write(data, future);
}
bool isBusy(void) const
檢查 Future 是否處於忙碌狀態

◆ operator const Future< E > &()

template<typename E >
ufm::util::PFuture::operator const Future< E > & ( void ) const
inline

PFuture 轉換為 Future<E> 的常量引用

允許將此物件作為不同泛型參數的 Future 使用

樣版參數
E目標 Future 的泛型類型
傳回值
轉換後的 Future<E> 常量引用

◆ operator Future< E > &()

template<typename E >
ufm::util::PFuture::operator Future< E > & ( void )
inline

PFuture 轉換為 Future<E> 的引用

允許將此物件作為不同泛型參數的 Future 使用

樣版參數
E目標 Future 的泛型類型
傳回值
轉換後的 Future<E> 引用

◆ setCompleted()

void ufm::util::PFuture::setCompleted ( void )
protected

Future 標記為已完成狀態

更新 Future 狀態並執行相關的完成邏輯

◆ setFailed()

void ufm::util::PFuture::setFailed ( void )
protected

Future 標記為失敗狀態

更新 Future 狀態並執行相關的失敗處理邏輯

◆ setWait()

virtual bool ufm::util::PFuture::setWait ( void )
overridevirtual

Future 設置為等待狀態

Future 的狀態設置為 WAIT,表示異步操作正在進行中

傳回值
bool 設置操作的執行狀態 • true - 成功設置為等待狀態 • false - 設置失敗(例如已經處於其他狀態)

實作 ufm::util::Future< int >.

◆ syncWrite()

int ufm::util::PFuture::syncWrite ( ufm::io::OutputStream & outputStream,
ufm::lang::Readable & readable,
int timeoutMs = 5000 )

執行帶超時的同步寫入操作

提供便利方法來執行 OutputStream 的同步寫入,並等待指定時間

參數
outputStream目標輸出流
readable要寫入的數據源
timeoutMs等待超時時間(毫秒)
傳回值
int 寫入的字節數 • >=0 - 成功寫入的字節數 • -1 - 寫入失敗或超時
PFuture future;
SimpleOutputStream stream;
ByteArrayReadable data("Hello World");
int result = future.syncWrite(stream, data, 3000);
if (result >= 0) {
System::out().println("寫入成功: ").println(result).println(" 字節");
}
int syncWrite(ufm::io::OutputStream &outputStream, ufm::lang::Readable &readable, int timeoutMs=5000)
執行帶超時的同步寫入操作

◆ waitDone()

virtual bool ufm::util::PFuture::waitDone ( int timeout)
overridevirtual

等待異步操作完成

阻塞當前執行緒直到異步操作完成或達到指定的超時時間

參數
timeout等待超時時間(毫秒)
傳回值
bool 等待操作的執行狀態 • true - 操作在超時時間內完成 • false - 超時或發生錯誤

實作 ufm::util::Future< int >.


此類別(class) 文件是由下列檔案中產生: