生产者与消费者的一个简单例子

  • 生产者

#include<fstream>

#include<iostream>

#include<Windows.h>

using namespace std;

int main(void)

{

ofstream out;

const char ch = ‘*‘;

long long k = 0;

DWORD64 time = GetTickCount64();

while (true)

{

if (GetTickCount64() - time > 5000)

{

out.open("1", ios::binary | ios::out | ios::app);

++k;

out.write((char*) (&ch), sizeof(char));

out.close();

time = GetTickCount64();

cout << "product " << k << endl;

}

}

return 0;

}

  • 消费者

#include<iostream>

#include<fstream>

#include<Windows.h>

using namespace std;

int main(void)

{

ifstream in("1", ios::binary | ios::in);

ofstream consumer("2", ios::binary | ios::out);

while (!in)

{

cout << "producter is not readly!" << endl;

Sleep(2000);

in.open("1", ios::binary | ios::in);

}

long long k = 1;

char c;

while (true)

{

while (in.eof()||in.peek()!=‘*‘)

{

cout << "product is empty!" << endl;

in.close();

Sleep(1790);

in.open("1", ios::binary | ios::in);

in.ignore(k - 1);

}

in.read((char *) (&c), sizeof(char));

in.close();

consumer << c << flush;

cout << "consumer " << k << endl;

k++;

Sleep(2000);

in.open("1", ios::binary | ios::in);

in.ignore(k-1);

}

return 0;

}

  • 运行效果

生产者与消费者的一个简单例子

时间: 2024-10-20 10:52:41

生产者与消费者的一个简单例子的相关文章

从一个简单例子来理解js引用类型指针的工作方式

? 1 2 3 4 5 6 7 <script> var a = {n:1};  var b = a;   a.x = a = {n:2};  console.log(a.x);// --> undefined  console.log(b.x);// --> [object Object]  </script> 上面的例子看似简单,但结果并不好了解,很容易把人们给想绕了--"a.x不是指向对象a了么?为啥log(a.x)是undefined?".&

C语言多线程的一个简单例子

多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <pthread.h> void * print_a(void *); void * print_b(void *); int main(){ pthread_t t0; pthread_t t1; // 创建线程A if(pthread_creat

PyQt安装与一个简单例子

PyQt在Windows+Visual Studio下安装所需文件如下: python-2.7.3.msi (www.python.org/download) sip-4.14.2.zip (www.riverbankcomputing.co.uk/software/sip/download) PyQt-Py2.7-x86-gpl-4.9.6-1.exe(www.riverbankcomputing.co.uk/software/pyqt/download) 安装方法: 首先安装python2.

词法分析程序 LEX和VC6整合使用的一个简单例子

词法分析的理论知识不少,包括了正规式.正规文法.它们之间的转换以及确定的有穷自动机和不确定的有穷自动机等等... 要自己写一个词法分析器也不会很难,只要给出了最简的有穷自动机,就能很方便实现了,用if.switch-case来写一通所谓的状态转换就可以,我近期会写一个简单的词法分析程序来作为例子... 现在已经有人发明了一个叫LEX的工具让你去应用,那我们就省了不少力气,毕竟没到万不得已的时候,我们都没必要重新发明轮子,从另一个角度来说,使用工具是我们人类知识继承的一种方法,也是我们比其他动物优

一个简单例子了解使用互斥量线程同步

在刚开始学习学习线程同步时总是认为两个线程或是多个线程共同运行,但是那样是做的. 同步就是协同步调,按预定的先后次序进行运行.如:你说完,我再说. "同"字从字面上容易理解为一起动作. 其实不是,"同"字应是指协同.协助.互相配合. 如进程.线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行:B依言执行,再将结果给A:A再继续操作. 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回,同时其它

netsh interface portproxy的一个简单例子

netsh interface portproxy的微软帮助文档地址: https://technet.microsoft.com/zh-cn/library/cc776297(WS.10).aspx#BKMK_1 下面是一个简单的例子: //显示所有 portproxy 参数,包括 v4tov4.v4tov6.v6tov4 和 v6tov6 的端口/地址对. C:\>netsh interface portproxy show all //因为没有配置过它,所以没有东西可以显示. //添加配置

Spring MVC:使用SimpleUrlHandlerMapping的一个简单例子

实现一个控制器ShirdrnController,如下所示: package org.shirdrn.spring.mvc; import java.util.Date; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log;import org.apache.commons.logging.

js 排列 组合 的一个简单例子

最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比如12的全排列,首先把1拿出来放到elementCur,再获取由1组成的数组[2],然后在循环把1插入到0,1的位置后再返回1,2][2,1] 如果是123那么首先获取23的全排列[2,3][3,2],然后在插入1,[1,2,3][2,1,3][2,3,1][1,3,2][3,1,2][3,2,1]

java 20 - 4 IO流概述和一个简单例子解析

IO流的分类:  流向: 输入流 读取数据  输出流 写出数据 数据类型:  字节流  字节输入流 读取数据 InputStream  字节输出流 写出数据 OutputStream  字符流  字符输入流 读取数据 Reader  字符输出流 写出数据 Writer 注意:一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的. ------------------------------------割割割--------------------------