使用具有相同对象的两个线程向两个不同的文件描述符写入

Using two threads with the same object to write to two different filedescriptors?

本文关键字:两个 文件 描述 线程 对象      更新时间:2023-10-16

所以我有一个类,其成员指针指向一个对象,该对象具有使用系统调用写入文件描述符的成员函数。我想使用线程扩展它,这样我就可以同时写入两个文件描述符(它们不在磁盘上)。当两个线程使用相同对象的写函数时,这是可能的吗?

int main()
{
 Writer oWr;
 myClass omyClass(&oWr);
 unsigned char data[10] ={0} ;
 int fd1 = open(...);
 int fd2 = open(...);
 omyClass.write(fd1, data, 10);
 //Create 2 threads using omyClass but with fd1 and fd2

}

class myClass
{
  myClass::myClass( Writer *pWr) : pWriter(pWr)
  {}
  void write(int fd, void* data, int size)
  {
     pWriter->writeraw(fd, data, size);
  }
private:
  Writer *pWriter;
};

class Writer
{
 int writeraw(int fd, void* data, int size)
 {
  int ret = write(fd, data, size);
  return ret;
 }
};

由于文件描述符被传递给write函数,所以这里没有问题。