这几天一直被人问,你做过线程和进程吗?
以下写个例子
在进程中的线程通信
#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);
}
}
分享到:
相关推荐
pthread_create在循环中,几乎瞬间创建5个线程,但只有第1个线程有机会输出(或者第2个也有,也可能没有,取决于内核调度)如果第3个线程执行了exit,将整个进程退出了,所以全部线程退出了。 所以,多线程环境中,...
由于listenfd是在fork之前就有的,所以所有子进程都可以访问到,不需用到“进程间文件描述符传递”问题; 4,子进程每accept到一个请求都告诉父进程,父进程把请求数加1;子进程没完成一个请求,父进程把请求数减1;...
线程通信: 同步,互斥 全局变量 无名信号量(内存信号量): sem_t, p, v, 互斥锁:pthread_mutex_t 进程: Fork()/ execve();// system(); 进程内存空间 环境变量: 从哪里来, 放在那里, 如何取用 进程...
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下的线程 ...
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通讯,采用三种不同实现方法 1.fork方式,服务器为每个客户端...3.pthread方式,服务器建立一个侦听线程和接收线程分别用于侦听和接收数据,可以将其进行修改成为每个客户端建立一个线程(请自己实现)
进程间通信: 匿名管道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...
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下的线程 ...
2.3.4 Makefile 中使用变量............................................ 39 2 . 3 . 5搜索路径...................................................... 43 2 . 3 . 6自动推导规则..................................