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

时间:2014-03-17 09:23:00

标签: c++ multithreading

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

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;
 }
};

1 个答案:

答案 0 :(得分:0)

当文件描述符传递给write函数时,这里没有问题。