再论进程

来源:互联网 发布:cf修复软件 编辑:程序博客网 时间:2024/06/10 03:19

《朱老师物联网大讲堂》学习笔记          

学习地址:www.zhulaoshi.org


老师使用进程实现之前鼠标和键盘读入的示例代码,

#include <stdio.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(void){// 思路就是创建子进程,然后父子进程中分别进行读键盘和鼠标的工作int ret = -1;int fd = -1;char buf[200];ret = fork();if (ret == 0){// 子进程fd = open("/dev/input/mouse1", O_RDONLY);if (fd < 0){perror("open:");return -1;}while (1){memset(buf, 0, sizeof(buf));printf("before read.\n");read(fd, buf, 50);printf("读出鼠标的内容是:[%s].\n", buf);}}else if (ret > 0){// 父进程while (1){memset(buf, 0, sizeof(buf));printf("before read.\n");read(0, buf, 5);printf("读出键盘的内容是:[%s].\n", buf);}}else{perror("fork:");}return 0;}

感觉,进程实现的也挺好的,为什么还要其它的呢,
原因是,
进程间切换开销大,
进程断点的保护和恢复,
进程间天生隔离,所以通信也麻烦效率低,


解决的一个方案,
就是多线程,
也有多任务的特性,
线程间切换和通信得到了改善,
多线程在多核心cpu上更有优势,

0 0
原创粉丝点击