Multithreading 共享Symbian';在两个线程之间创建文件

Multithreading 共享Symbian';在两个线程之间创建文件,multithreading,symbian,Multithreading,Symbian,在我使用openc移植到Symbian的多线程应用程序中,我有一个对象,它使用RFile将数据读/写到文件中。这个对象应该是从不同的线程访问的(它是线程安全的),但是有一个问题,显然RFile对象只能在一个线程内访问。一旦另一个线程使用RFile对象,我就会得到一个KERN-EXEC 0 有没有办法在不同的线程之间共享RFile对象?我不能使用活动对象 创建第二个RFile句柄(我们称之为secondFile)。不要打开它。改用RFile::Duplicate(第二个文件)。在此之后,进程中的所

在我使用openc移植到Symbian的多线程应用程序中,我有一个对象,它使用RFile将数据读/写到文件中。这个对象应该是从不同的线程访问的(它是线程安全的),但是有一个问题,显然RFile对象只能在一个线程内访问。一旦另一个线程使用RFile对象,我就会得到一个KERN-EXEC 0


有没有办法在不同的线程之间共享RFile对象?我不能使用活动对象

创建第二个RFile句柄(我们称之为secondFile)。不要打开它。改用RFile::Duplicate(第二个文件)。在此之后,进程中的所有线程都应该能够使用第二个文件句柄。

使用RFs::ShareAuto()似乎可行。

您正在寻找以下组合:

  • 从传输已打开的文件 将服务器连接到客户端

    RFile::TransferToClient(const RMessage2 &,TInt)const
    
  • 将已打开的文件传输到 另一个过程

    RFile::TransferToProcess(RProcess &,TInt,TInt)const
    
  • 将已打开的文件传输到 服务器

  • 在第一个线程/服务器/进程和

  • 允许服务器采用服务器中已打开的文件 客户

  • 允许服务器采用服务器中已打开的文件 客户端进程

    RFile::AdoptFromCreator(TInt,TInt)
    
  • 允许客户端采用已从中打开的文件 服务器

    RFile::AdoptFromServer(TInt,TInt)
    
  • 。。在第二个。这有效地复制了文件句柄,允许两者都使用它

    如果在同一进程中的线程之间进行传输,则可以更简单地使用

    RFile::Duplicate(const RFile &,TOwnerType)
    
    RFile::AdoptFromServer(TInt,TInt)
    
    RFile::Duplicate(const RFile &,TOwnerType)