【学习总结】进程

进程间通信

多核并行(OpenMP)

#include <stdio.h>
#include <omp.h>
#include <stdlib.h>

int main()
{
	#pragma omp parallel num_threads(4)
	{
		for(int i = 0 ; i < 4 ; i++)
		{
			for(int j =0 ; j <4 ; j++)
			{
				printf("(%d,%d)"),i , j;
				printf("Thread num: %d \n", omp_get_thread_num());
			}
		}
	}
	return 0;
}

gcc -std=c99 parallel.c -o parallel -fopenmp

不加{}默认只对单层循环有效

缺点:不能再非共享内存系统上使用(如计算机集群)

进程等待

pid_t wait(int *status) /*子进程结束,内核会给父进程发送SIGCHLD信号,父进程wait函数捕捉该信号,子进程退出状态通过status参数抓取,可以在父进程中通过status抓取到子进程的不同状态进行不同的操作。函数返回值为子进程的pid,出错返回-1,原因存在errno*/

pid_t waitpid(pid_t pid, int *status, int options)/*pid<-1:等待进程组识别码为|pid|的任何子进程,-1:等待任何子进程,0:等待进程组识别码与目前进程相同的任何子进程,〉0:等待任何子进程识别码为pid的子进程*/

http://blog.csdn.net/guoping16/article/details/6583466

void main(){
	pid_t pid,cpid;
	pid = fork();
	int status;
	if( 0 == pid )
	{
		printf("This is a child process!pid:%d,getpid:%d\n",pid,getpid());
		sleep(5);
		exit(6);
	}else{
		cpid = wait(&status);
		printf("This is the paraent process!pid:%d,getpid:%d\n",pid,getpid());
		if(WIFEXITED(status))
			printf("return from wait:%d,status:%d\n",cpid,WEXITSTATUS(status));
	}
}

多线程编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值