0
我寫代碼,其中我有三個線程從一個文件中讀取行,3個三個線程寫入文件。讀取行時,它們存儲在緩衝區內。閱讀完成後將被激活。我已經去了這個,我可以讓它只用一個線程閱讀和一個線程寫作。此刻我很迷茫。 任何幫助將是偉大的。C信號量線程讀取文件
這裏是我寫的代碼片段。
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,是緩衝區空的。文件是輸入文件。 – spikestar
我的意思是,他們是什麼類型,以及他們如何以及在哪裏定義和使用?簡單地說,你發佈的片段太不完整,缺乏足夠的上下文讓任何人給你很多幫助。 –