首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

在过程中的线程通信pthread fork

2012-08-26 
在进程中的线程通信pthread fork?这几天一直被人问,你做过线程和进程吗?以下写个例子?在进程中的线程通信?

在进程中的线程通信pthread fork

?

这几天一直被人问,你做过线程和进程吗?

以下写个例子

?

在进程中的线程通信

?

?

#include <stdio.h>#include <stdlib.h>#include <pthread.h>void task1();void task2();int G_INT=0;pthread_mutex_t mlock;pthread_attr_t  at1;pthread_attr_t  at2;int ret;int main(int argc,char *argv[]){ret=pthread_attr_init(&at1);ret=pthread_attr_init(&at2);ret=pthread_attr_setdetachstate(&at1,PTHREAD_CREATE_DETACHED);ret=pthread_attr_setdetachstate(&at1,PTHREAD_CREATE_JOINABLE);if(fork()==0) {  pthread_t t1,t2;  ret=pthread_create(&t1,&at1,(void *)task1,NULL);  ret=pthread_create(&t2,&at2,(void *)task2,NULL);        if(ret)     {      perror("t2 create:");      exit(EXIT_FAILURE);      }  pthread_join(t2,NULL);  pthread_join(t1,NULL);  pthread_attr_destroy(&at1);  pthread_attr_destroy(&at2); } return 0;}void task1(){while(1)     {    ret=pthread_mutex_lock(&mlock);        G_INT++;    ret=pthread_mutex_unlock(&mlock);             if(G_INT>5000) G_INT=0;sleep(1);}}void task2(int *p){while(1) {printf("\nG_INT= %d\n",G_INT);        sleep(60);}}

热点排行