在使用Open C将多线程应用程序移植到塞班系统时,我有一个对象使用RFile读写文件数据。该对象应该可以从不同的线程中访问(它是线程安全的),但是问题在于,显然RFile对象只能在一个线程中访问。一旦另一个线程使用RFile对象,我就会收到KERN-EXEC 0错误。
是否有办法在不同的线程之间共享RFile对象?我不能使用Active Objects。
是否有办法在不同的线程之间共享RFile对象?我不能使用Active Objects。
创建第二个RFile句柄(我们称之为secondFile)。不要打开它。使用RFile::Duplicate(secondFile)。此后,您的进程中的所有线程都应该能够使用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)
允许服务器从客户端进程采用已经打开的文件
RFile :: AdoptFromCreator(TInt,TInt)
允许客户端从服务器中采用已经打开的文件
RFile :: AdoptFromServer(TInt,TInt)
在第二个中。这实际上是复制文件句柄,使两者都可以使用它。
如果在同一个进程中的线程之间传输,则可以更简单地使用
RFile::Duplicate(const RFile &,TOwnerType)