Linux?????????????????
???????????? ???????[ 2014/10/9 10:51:50 ] ?????????????? Linux
??????????????????????????????????????????????????????????С?
??????????????:
1 #include "head.h"
2 void fd_init(pFD *phead)
3 {
4 *phead= NULL;
5 }
6 void fd_insert(pFD *phead??int rfd??int wfd)
7 {
8 pFD pnew = (pFD )calloc(1??sizeof(FD));
9 pnew->s_rfd=rfd;
10 pnew->s_wfd=wfd;
11 pnew->next = *phead;
12 *phead = pnew;
13 }
14 int fd_find(pFD phead??int rfd)
15 {
16 while(phead)
17 {
18 if(phead->s_rfd==rfd)
19 break;
20 else
21 phead = phead->next;
22 }
23 if(phead == NULL)
24 return -1;
25 else
26 return phead->s_wfd;
27 }
28
29 void fd_del(pFD *phead??int rfd)
30 {
31 pFD pcur??ppre;
32 pcur=*phead;
33 ppre=NULL;
34 while(pcur)
35 {
36 if(pcur->s_rfd == rfd)
37 break;
38 else
39 {
40 ppre=pcur;
41 pcur = pcur ->next;
42 }
43 }
44 if(ppre==NULL)
45 {
46 *phead=pcur->next;
47 free(pcur);
48 pcur=NULL;
49 }
50 else
51 {
52 ppre->next=pcur->next;
53 free(pcur);
54 pcur=NULL;
55 }
56 }
???????????????????????????????????????????á???е??
??????????????:
1 #include "head.h"
2 static int que_empty(pQUEUE pq)
3 {
4 return pq->front == pq->tail;
5 }
6 static int que_full(pQUEUE pq)
7 {
8 return (pq->tail+1)%(TASK_CNT+1)==pq->front;
9 }
10 static int que_cnt(pQUEUE pq)
11 {
12 return (pq->tail - pq->front +TASK_CNT+1)%(TASK_CNT + 1);
13 }
14 void add_task(pQUEUE pq ??pTASK pt)
15 {
16 pthread_mutex_lock(&lock);
17 while(que_full(pq))
18 pthread_cond_wait(&cond1??&lock);
19 pq->arr[pq->tail]=*pt;
20 pq->tail = (pq->tail+1)%(TASK_CNT+1);
21 if(que_cnt(pq)==1)
22 pthread_cond_broadcast(&cond2);
23 printf("????????????!! ");
24 pthread_mutex_unlock(&lock);
25 }
26 void get_task(pQUEUE pq ??pTASK pt)
27 {
28 pthread_mutex_lock(&lock);
29 while(que_empty(pq))
30 pthread_cond_wait(&cond2??&lock);
31 *pt=pq->arr[pq->front];
32 pq->front = (pq->front+1)%(TASK_CNT+1);
33 if(que_cnt(pq)== TASK_CNT -1)
34 pthread_cond_broadcast(&cond1);
35 printf("????????????!! ");
36 pthread_mutex_unlock(&lock);
37 }
38
39
40 void excute_task(pTASK pt)
41 {
42 char buf[1024];
43 memset(buf??0??1024);
44 strcpy(buf??pt->s_msg);
45 int index;
46 for(index=0;index < strlen(buf);index++)
47 buf[index]=toupper(buf[index]);
48 buf[index]=' 主站蜘蛛池模板: 日本香蕉一区二区三区 | 欧美乱大交xxxxxbbb | 国产成人精品aaaa视频一区 | 伦理在线观看 | 日产国产欧美韩国在线 | 免费在线一级片 | 老司机精品免费视频 | 欧美国产丝袜日韩精品 | 操片免费看| 日本高清影院 | 激情一区二区三区成人 | 日韩视频在线一区 | 福利片在线看 | 欧美变态口味重另类牲 | 大色综合色综合网站 | 免费黄色小视频 | 国产午夜大片 | 青青青国产在线 | 日韩一级精品久久久久 | 国产精品18久久久久网站 | 国产成人免费无庶挡视频 | 看黄色一级 | 亚洲福利一区 | 激情插插 | 欧美在线视频免费看 | 波多野结衣在线观看视频 | 精品一区二区在线欧美日韩 | 欧美精品xxxtv| 一级做a爱片性色毛片武则天五则 | 麻豆久久婷婷国产综合五月 | 精选国产门事件福利在线观看 | 在线观看免费黄色网址 | 麻豆国产三级在线观看 | 一本大道道无香蕉综合在线 | 日韩精品www | 日韩资源站 | 欧美一区二区三区视频 | 男人吃奶吃奶啪啪gif | 亚洲九九色 | 欧美一级欧美一级在线播放 | 热re91久久精品国产91热 |