阅读带螺纹的管道

时间:2011-11-07 18:25:18

标签: c++ pthreads pipe

我正在编写一个程序,其中线程使用管道相互交互。在我的程序中,主线程创建一个应用程序线程和一个协议线程。为协议线程创建了两个管道,它在读取管道上被阻止。应用程序线程写入协议线程的一个管道。

现在我有3个线程(主线程,1个协议线程,1个应用程序线程)。应用程序线程写入其中一个协议管道后,协议线程不会立即读取数据。如果我按两次/三次输入,它会读取数据。不知道这里发生了什么。

语法可能不完全正确..但只是给出了一个想法

// application thread
char* data = new char[100];
for (i = 0; i < 100; ++i)
{
    data[i] = 'm';
}

write(fd, &data, 100);
sleep(10);

//protocol thread
while(1)
{
    char data1[100];
    read(fd1, &data1, 100);
}

为什么协议线程不立即读取数据。我看到管道没有缓冲(fflush没有帮助)。那么“输入”(返回)是做什么来使线程解锁并读取数据..

任何人都可以帮助我。谢谢!

0 个答案:

没有答案