【发布时间】:2011-10-08 09:21:37
【问题描述】:
我编写代码,其中我有三个线程从文件中读取行,三个线程写入文件。读取行时,它们存储在缓冲区中。当阅读完成时将被激活。我对此进行了尝试,并且我只能使用一个用于读取的线程和一个用于写入的线程来使其工作。目前我很迷茫。 任何帮助都会很棒。
这是我写的代码片段。
void *read_file(void *arg)
{
semaphore_down(&sem_write);
while(fgets(temp, MAX_BUFFER, file) != NULL)
{
if(!isFull(&b))
{
printf("ADDING\n");
read(&b,temp);
}
}
semaphore_up(&sem_read);
}
void *write_file(void *arg)
{
semaphore_down(&sem_read);
while(!isEmpty(&b))
{
write(&b,&temp2);
fprintf(file2, "%s", temp2);
}
semaphore_up(&sem_write);
}
任何帮助将不胜感激
【问题讨论】:
-
什么是:
b、semaphore_down、semaphore_up、isFull、isEmpty、temp和temp2、file、file2?你不是唯一一个迷路的人。 -
b 是缓冲区,isFull 是缓冲区已满。 isEmpty,是缓冲区空。 file 是输入文件。
-
我的意思是,它们是什么类型以及它们是如何以及在哪里定义和使用的?简而言之,您发布的片段太不完整,缺乏足够的上下文,无法让任何人为您提供很多帮助。
标签: c multithreading file semaphore