啊……同步终于清晰了,晕倒了.
这个东西真的让我费解,非常愚蠢.很遗憾没有书看,太费时间了.
两个线程同步锁定
#包含
#包含
#包含
#包含
#包含
#define BUFSIZE 4
#define NUMBER 8
int sum_of_number=0;
int value=0; //全局变量,注意锁定
/*定义两个变量信号量*
sem_t write_res_number;
sem_t read_res_number;
/*初始化锁*
pthread _ mutex _ t buffer _ mutex=pthread _ mutex _ initializer;
这是静态void *产品(void * arg )
{
int i;
for(I=0; i=12; I )
{
/*减少可写入资源数量*
SEM_wait(write_RES_number );
//摇号/
thread_mutex_lock(buffer_mutex );
value=1
printf(procuderwrite:%d(n ),value );
//解锁/
pthread _ mutex _ unlock (buffer _ mutex;
SEM_post(read_RES_number );
}
返回空值;
}
静态void * consumer (void * arg ) )。
{
int i,num;
for(I=0; i=12; I )
{
SEM_post(write_RES_number );
SEM_wait(read_RES_number );
thread_mutex_lock(buffer_mutex );
value=1
printf(readvalue%d.n ),value );
pthread _ mutex _ unlock (buffer _ mutex;
}
返回空值;
}
intmain(intargc,char ** argv ) ) ) ) ) ) ) )。
{
pthread_t p_tid;
pthread_t c_tid;
SEM_init(write_RES_number,0,0 );
SEM_init(read_RES_number,0,0 );
phread_create(p_tid,NULL,producer,NULL );
phread_create(c_tid,NULL,consumer,NULL );
phread_join(p_tid,NULL );
phread_join(c_tid,NULL );
pthread _ mutex _ destroy (buffer _ mutex; /*/
}
在linux上也一样。
正在cygwin上运行结果:
$ gcc -lpthread -o th th
$ ./th
procuder write: 1
领先价值2。
procuder write: 3
导言值4。
procuder write: 5
领先价值6。
procuder write: 7
领先价值8。
procuder write: 9
领先价值10。
procuder write: 11
领先价值12。
procuder write: 13
领先价值14。
procuder write: 15
导言值16。
procuder write: 17
领先价值18。
procuder write: 19
领先价值20。
procuder write: 21
导言值22。
procuder write: 23
导言值24。
procuder write: 25
导言值26。
$
posted on 2008-11-17 13:38左向右阅读(1211 )注释)0)编辑收藏引用分类: Linux学习库,UNIX