我正在使用Open C移植到Symbian,我有一個使用RFile來讀/寫數據到文件的對象。這個對象應該是從不同的線程訪問的(它是線程安全的),然而存在的問題是顯然RFile對象只能在一個線程內訪問。只要另一個線程使用RFile對象,我得到一個KERN-EXEC 0.在多線程應用程序中分享Symbian的RFile
有什麼辦法在不同線程之間共享RFile對象嗎?我無法使用活動對象。
我正在使用Open C移植到Symbian,我有一個使用RFile來讀/寫數據到文件的對象。這個對象應該是從不同的線程訪問的(它是線程安全的),然而存在的問題是顯然RFile對象只能在一個線程內訪問。只要另一個線程使用RFile對象,我得到一個KERN-EXEC 0.在多線程應用程序中分享Symbian的RFile
有什麼辦法在不同線程之間共享RFile對象嗎?我無法使用活動對象。
創建第二個RFile句柄(我們稱其爲secondFile)。不要打開它。改爲使用RFile :: Duplicate(secondFile)。在你的過程中的所有線程應該能夠使用第二個文件句柄。
使用RFs :: ShareAuto()似乎工作。
您正在尋找的組合:
從 服務器傳送一個已經打開的文件到客戶端
RFile::TransferToClient(const RMessage2 &,TInt)const
轉移已經打開的文件 另一個進程
RFile::TransferToProcess(RProcess &,TInt,TInt)const
轉讓一個已經打開的文件到 服務器
RFile::TransferToServer(TIpcArgs &,TInt,TInt)const
在第一個線程/服務器/過程和
允許服務器從 客戶
採用一個已經打開的文件RFile::AdoptFromClient(const RMessage2 &,TInt,TInt)
允許服務器採用al從 客戶端進程
RFile::AdoptFromCreator(TInt,TInt)
準備打開的文件允許客戶端從服務器
RFile::AdoptFromServer(TInt,TInt)
採用一個已經打開的文件。在第二位。這有效地複製了文件句柄,以允許它們使用它。
如果在同一進程的線程之間傳遞,那麼你可以更簡單地使用
RFile::Duplicate(const RFile &,TOwnerType)