/*控制进程并发,实现高效正确的并发誊抄过程*/#include "stdio.h"
#include "conio.h"
#include "windows.h"
#include <iostream>
using namespace std;HANDLE Mutex;
HANDLE buf1_e;
HANDLE buf1_f;
HANDLE buf2_e;
HANDLE buf2_f;typedef struct _THREADDATA
{FILE *infile;char *buf1;char *buf2;
}*LPTHREADDATA, THREADDATA;DWORD WINAPI get(LPVOID lParam)
{LPTHREADDATA pData = (LPTHREADDATA)lParam;for (;*pData->buf1!=EOF;) {WaitForSingleObject(buf1_e,INFINITE);//p*pData->buf1=fgetc(pData->infile);    ReleaseSemaphore(buf1_f,1,NULL);//v}return 0;
}DWORD WINAPI copy(LPVOID lParam)
{LPTHREADDATA pData = (LPTHREADDATA)lParam;for (;*pData->buf1!=EOF;) {WaitForSingleObject(buf1_f,INFINITE);//p(buf1_f)WaitForSingleObject(buf2_e,INFINITE);//p(buf2_e)*pData->buf2=*pData->buf1;ReleaseSemaphore(buf1_e,1,NULL);//v(buf1_e)ReleaseSemaphore(buf2_f,1,NULL);//v(buf2_f)}return 0;
}DWORD WINAPI put(LPVOID lParam)
{LPTHREADDATA pData = (LPTHREADDATA)lParam;for (;*pData->buf1!=EOF;) {WaitForSingleObject(buf2_f,INFINITE);//pcout<<*pData->buf2; ReleaseSemaphore(buf2_e,1,NULL);//v}return 0;
}int main()
{//   Mutex=CreateMutex(NULL,FALSE,NULL);   buf1_e=CreateSemaphore(NULL,1,1,NULL);buf1_f=CreateSemaphore(NULL,0,1,NULL);buf2_e=CreateSemaphore(NULL,1,1,NULL);buf2_f=CreateSemaphore(NULL,0,1,NULL);FILE *infile=fopen("in.txt","r");char buf1,buf2;LPTHREADDATA pData = new THREADDATA;pData->infile=infile;pData->buf1=&buf1;pData->buf2=&buf2;DWORD ThreadId1,ThreadId2,ThreadId3;::CreateThread(NULL, 0, copy, (LPVOID)pData, 0, &ThreadId2);    ::CreateThread(NULL, 0, put, (LPVOID)pData, 0, &ThreadId3);   ::CreateThread(NULL, 0, get, (LPVOID)pData, 0, &ThreadId1);   Sleep(20);//getch();fclose(infile);return 0;
}

操作系统——控制进程并发,高效并发正确誊抄相关推荐

  1. 【操作系统】进程、线程、协程和并发、并行

    文章目录 一.并发介绍 1. 进程和线程 (1)进程 (2)线程 (3)进程与线程的区别 (4)任务调度 (5)何时使用多进程,何时使用多线程? 2. 线程和协程 (1)协程 (2)协程和线程的区别 ...

  2. Linux并发程序课程设计报告,网络操作系统课程设计--进程机制与并发程序设计-linux下生产者与消费者的问题实现.doc...

    网 络 操 作 系 统 课 程 设 计 网络操作系统课程设计 设计内容:进程机制与并发程序设计inux下生产者与消费者的问题实现进程机制与并发程序设计inux下生产者与消费者的问题实现 (1)掌握基本 ...

  3. 《深入理解Java虚拟机》笔记6——高效并发

    第五部分 高效并发 第十二章 Java内存模型与线程 并发处理的广泛应用是使得Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人类"压榨"计算机运算能力的最有力 ...

  4. 『操作系统』 进程的描述与控制 Part3 管程

    文章目录 2.6 管程 管程的基本概念 1.管程的组成 2.管程的主要特性 3.条件变量 4.管程的实现 5.管程和进程的异同点 练习题 2.7 进程通信 进程通信的类型 共享存储器系统 练习题 消息 ...

  5. 『操作系统』 进程的描述与控制 Part2 进程同步

    文章目录 2.4 进程同步 2.4.1 进程同步的基本概念 1.两种制约关系 2.临界资源 3.临界区 4.同步机制应遵循的规则 练习题 练习题 2.4.2 实现互斥的软硬件方法 算法1 算法2 算法 ...

  6. 深入理解Java虚拟机-高效并发

    本博客主要参考周志明老师的<深入理解Java虚拟机>第二版 读书是一种跟大神的交流.阅读<深入理解Java虚拟机>受益匪浅,对Java虚拟机有初步的认识.这里写博客主要出于以下 ...

  7. 【Java书笔记】:《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第2部分-自动内存管理,第3部分-虚拟机执行子系统,第5部分-高效并发

    作者:周志明 整理者GitHub:https://github.com/starjuly/UnderstandingTheJVM 第2部分-自动内存管理 第2章 Java内存区域与内存溢出异常 2.2 ...

  8. 『操作系统』 进程的描述与控制 Part4 线程

    文章目录 2.8 线程及其实现 1.线程的概念 练习题 2.线程的实现及控制 例题 练习题 2.8 线程及其实现 1.线程的基本概念 2.线程的实现及控制 引入进程 的目的: 使多个程序能并发执行,提 ...

  9. 『操作系统』 进程的描述与控制 Part 1 前驱图与程序执行

    文章目录 2.1 前趋图和程序执行 2.1.1 程序的顺序执行及其特征 1. 程序的顺序执行 2.程序顺序执行时的特征 2.1.2 前趋图 2.1.3 程序的并发执行及其特征 1. 程序的并发执行 2 ...

最新文章

  1. 求解稀疏优化问题——增广拉格朗日方法+半光滑牛顿法
  2. 《深入理解java虚拟机》
  3. linux shell 获取当前正在执行脚本的绝对路径
  4. 阿里云 FaaS 架构设计与创新实践
  5. python numpy官网_Python Numpy 教程(上)
  6. 使用XMANAGER 联接LINUX 后使用SQLPLUS 不能使用BACKSPACE 回格键.
  7. zbrush 添加纹理贴图_zbrush零基础新手必看入门讲解
  8. gnuradio上怎么使用python文件_使用Python从PDF文件中提取数据
  9. linux中updatedb命令详解,updatedb命令
  10. 第44课 角谷猜想 动动脑 第2题 阅读程序写结果
  11. 编辑器扩展_开发者必备,可扩展编辑器tui.editor和TOAST UI组件家族
  12. [转]综述论文翻译:A Review on Deep Learning Techniques Applied to Semantic Segmentation
  13. 如何使用.NET从十六进制颜色代码中获取颜色?
  14. win7 64位系统配置服务器,Tomcat服务器win764位配置方法
  15. STC学习:光敏开关
  16. 计算机组成原理(4)-中央处理器CPU
  17. Jupyter Notebook简洁教程
  18. SpringBoot2尚硅谷笔记
  19. PUE 1.2,总投资达36.4亿,17600个机柜!天和防务拟建陕西最大数据中心
  20. mysql 修改字段值语句_mysql修改字段语句

热门文章

  1. 【飞腾平台安装windows arm 11系统】
  2. 【积累】《国产操作系统(麒麟)运维师》课程笔记-第6章-中
  3. CPU的cache工作原理
  4. 中国换热器行业“十四五”规划及未来需求规模报告2021-2027年
  5. 【JZOJ5078】【GDOI2017第三轮模拟day2】魔法咒语
  6. 平行志愿计算机录取顺序,顺序志愿和平行志愿傻傻分不清?选大学的解释让我瞬间就懂了!...
  7. 高内聚低耦合通俗解释
  8. 和总裁、专家交朋友,华为云助推政企智能化升级又做到前面去了
  9. PHP目录函数 readdir (从目录句柄中读取条目)
  10. openjudge 1.5.20 球弹跳高度的计算