0
我需要创建6个线程同时执行任务(增加/减少数字),直到整数变为0.我应该只使用UNIX命令(管道是具体的),我我不知道管道是如何工作的,或者我怎样才能实现这个程序。使用UNIX管道与C
这个整数可以存储在一个文本文件中。
我真的很感激,如果任何人都可以解释如何执行这一方案
我需要创建6个线程同时执行任务(增加/减少数字),直到整数变为0.我应该只使用UNIX命令(管道是具体的),我我不知道管道是如何工作的,或者我怎样才能实现这个程序。使用UNIX管道与C
这个整数可以存储在一个文本文件中。
我真的很感激,如果任何人都可以解释如何执行这一方案
书是正确的,管道可用于保护重要的部分,但如何做到这一点是不obvous。
int *make_pipe_semaphore(int initial_count)
{
int *ptr = malloc(2 * sizeof(int));
if (pipe(ptr)) {
free(ptr);
return NULL;
}
while (initial_count--)
pipe_release(ptr);
return ptr;
}
void free_pipe_semaphore(int *sem)
{
close(sem[0]);
close(sem[1]);
free(sem);
}
void pipe_wait(int *sem)
{
char x;
read(sem[0], &x, 1);
}
void pipe_release(int *sem)
{
char x;
write(sem[1], &x, 1);
}
在信号量的最大可用资源从OS变化到OS但通常为至少4096。这不用于保护的一个关键部分,其中初始值和最大值都为1
无关紧要用法:
/* Initialization section */
int *sem = make_pipe_semaphore(1);
/* critical worker */
{
pipe_wait(sem);
/* do work */
/* end critical section */
pipe_release(sem);
}
这个功课? – anthony 2010-10-14 01:18:31
我不清楚你是指bash脚本还是一个真正的C程序来完成这项工作。 – karlphillip 2010-10-14 01:19:16
实际C程序。 – Gootik 2010-10-14 01:20:32