- 论坛徽章:
- 0
|
本帖最后由 埋头苦编 于 2011-11-23 13:22 编辑
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define THRNR 6
static pthread_mutex_t mut[THRNR];
static int next(int n)
{
if (n+1==THRNR) {
return 0;
}
return n+1;
}
static void *thr_abcd(void *ptr)
{
int c='a';
c+=(int)ptr;
while (1) {
pthread_mutex_lock(mut+(int)ptr);
//sleep(1);
write(1, &c, 1);
//sleep(1);
pthread_mutex_unlock(mut+next((int)ptr));
}
}
int
main()
{
int i;
pthread_t tid[THRNR];
for (i=0;i<THRNR;++i) {
pthread_mutex_init(mut+i, NULL);
pthread_create(tid+i, NULL, thr_abcd, (void*)i);
}
sleep(5);
exit(0);
}
程序效果:abcd连续出来
红色sleep不会影响程序效果,但是黄色的会打乱输出顺序,为什么? |
|