首页 > 其他 > 详细

并发程序的基本实现

时间:2014-04-19 12:42:07      阅读:513      评论:0      收藏:0      [点我收藏+]

前言

  Linux 是多道处理系统,当然能够在同一段时间内处理多个程序。本文将介绍具体该如何操作。

fork 函数

  此函数的作用是创建一个子进程,调用后,调用进程和创建的新进程就会并发执行( 从调用处开始 )。它调用一次,却返回两次,一次是在调用进程内,返回子进程ID,另一次是在创建的新进程( 子进程 )内,返回 0。

  函数的具体说明请参阅相关文档。

并发代码框架

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <unistd.h>
 3 
 4 int main (void) {
 5 
 6     int pid;
 7 
 8     if ((pid = fork()) == 0) {
 9 
10         /* 
11          * 此处填写子进程代码 
12         */ 
13 
14     }
15     else if (pid < 0) {
16 
17         /* 
18          * 此处填写错误处理代码 
19         */ 
20 
21     }
22     else {
23 
24         /* 
25          * 此处填写父进程代码 
26         */ 
27 
28     }
29     
30     return 0;
31 }
bubuko.com,布布扣

代码实现

  此程序将让两个进程交替的每隔 1 秒打印它们的各自进程 ID

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <unistd.h>
 3 
 4 int main (void) {
 5 
 6     int pid;
 7 
 8     if ((pid = fork()) == 0) {
 9         while (1) {
10             sleep(1);
11             printf("I am %d \n", getpid());
12         }
13     }
14     else if (pid < 0) {
15         printf("创建子进程失败\n");
16         return 1;
17 
18     }
19     else {
20         while (1) {
21             sleep(1);
22             printf("I am %d \n", getpid());
23         }
24     }
25     
26     return 0;
27 }
28     
bubuko.com,布布扣

运行测试

  bubuko.com,布布扣

小结

  1. 本文讲述的是最简单最基本的并发实现,很多更复杂的并发实现都是基于这个框架的。

  2. 如果要确保子进程先运行,并且在启动子进程后立马 exec 一个新程序的话,请将 fork 换成 vfork

 

并发程序的基本实现,布布扣,bubuko.com

并发程序的基本实现

原文:http://www.cnblogs.com/scut-fm/p/3673077.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!