`
qvb3d
  • 浏览: 171341 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在进程中的线程通信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);
	}
}
分享到:
评论

相关推荐

    linux系统编程之线程.zip

    pthread_create在循环中,几乎瞬间创建5个线程,但只有第1个线程有机会输出(或者第2个也有,也可能没有,取决于内核调度)如果第3个线程执行了exit,将整个进程退出了,所以全部线程退出了。 所以,多线程环境中,...

    一个进程池的服务器程序

    由于listenfd是在fork之前就有的,所以所有子进程都可以访问到,不需用到“进程间文件描述符传递”问题; 4,子进程每accept到一个请求都告诉父进程,父进程把请求数加1;子进程没完成一个请求,父进程把请求数减1;...

    linux网络编程全套代码

    线程通信: 同步,互斥 全局变量 无名信号量(内存信号量): sem_t, p, v, 互斥锁:pthread_mutex_t 进程: Fork()/ execve();// system(); 进程内存空间 环境变量: 从哪里来, 放在那里, 如何取用 进程...

    linux网络编程-宋敬彬-part2

    4.3 进程间通信和同步 101 4.3.1 半双工管道 101 4.3.2 命名管道 107 4.3.3 消息队列 108 4.3.4 消息队列的一个例子 114 4.3.5 信号量 116 4.3.6 共享内存 121 4.3.7 信号 124 4.4 Linux下的线程 ...

    linux网络编程-宋敬彬-part3

    4.3 进程间通信和同步 101 4.3.1 半双工管道 101 4.3.2 命名管道 107 4.3.3 消息队列 108 4.3.4 消息队列的一个例子 114 4.3.5 信号量 116 4.3.6 共享内存 121 4.3.7 信号 124 4.4 Linux下的线程 ...

    linux下socket通讯

    linux下socket通讯,采用三种不同实现方法 1.fork方式,服务器为每个客户端...3.pthread方式,服务器建立一个侦听线程和接收线程分别用于侦听和接收数据,可以将其进行修改成为每个客户端建立一个线程(请自己实现)

    UnixProgramming

    进程间通信: 匿名管道pipe,命名管道(FIFO)mkfifo System V IPC(还有一组POSIX接口,更易用,可以参考《TLPI》) 信号量semget、semop、semctl 消息队列msgget、msgsnd/msgrcv、msgctl 共享内存shmget、shmat/shmdt...

    计算机四级网络工程师

    5.线程基本概念,线程的实现机制,Pthread线程包的使用 6.进程的同步与互斥:信号量及PV操作,管程 7.进程间通信 8.处理机调度 四、存储管理方案 1.存储管理基本概念,存储管理基本任务 2.分区存储管理方案 3...

    linux网络编程-宋敬彬-part1

    4.3 进程间通信和同步 101 4.3.1 半双工管道 101 4.3.2 命名管道 107 4.3.3 消息队列 108 4.3.4 消息队列的一个例子 114 4.3.5 信号量 116 4.3.6 共享内存 121 4.3.7 信号 124 4.4 Linux下的线程 ...

    linux网路编程 中文 23M 版

    2.3.4 Makefile 中使用变量............................................ 39 2 . 3 . 5搜索路径...................................................... 43 2 . 3 . 6自动推导规则..................................

Global site tag (gtag.js) - Google Analytics