如何实现队列
来源:互联网 发布:ftp命令行用法带端口 编辑:程序博客网 时间:2024/06/11 01:07
</pre>队列就是先进先出的。这个在数据结构这门课里面就写的很清楚了,但是队列在实际项目中有什么用途呢?windows系统是基于消息建立起来的系统,所以在大部分应用程序里都要处理消息发送消息,所以消息队列是个很好的用途,下面的程序就使用队列来发送串口数据,避免了等待串口造成的延迟。<p></p><p></p><pre name="code" class="cpp">#include <vector>using namespace std;#include "Serial.h"class queque{private:vector<string> m_capcity;CSerial m_serial;bool m_bRun ;private://辅助线程static unsigned int __stdcall FuncDealThread(void* pParam);public://异步向串口中写入数据void writeData(string &str);queque();//构造~queque();};
这是队列的头文件,辅助线程的作用是隔一段时间就查询队列中有没有数据,有数据就通过串口发送出去,没有的话就挂起线程。写入数据的函数就是向队列中添加数据,下面的cpp文件是具体的实现
#include "queque.h"#include <process.h>void queque::writeData( string &str ){m_capcity.push_back(str);}unsigned int __stdcall queque::FuncDealThread( void* pParam ){queque * q = (queque*)pParam;while(q->m_bRun){if(q->m_capcity.size() ==0)//没有数据{Sleep(1000);continue;}else{string &str = q->m_capcity.front();q->m_serial.Write(str.c_str(),str.size(),NULL,NULL,200);;q->m_capcity.pop_back();}}return 0;}queque::queque(){m_serial.Open("COM4",0,0,true);_beginthreadex(0, 0, &FuncDealThread, this, 0, 0);}queque::~queque(){m_bRun = true;m_serial.Close();//关串口}
这个队列的实现主要是利用多线程来实现,辅助线程负责处理这个队列。下面的main函数来不停的向队列里写东西。
#include <Windows.h>#include <iostream>#include "queque.h"void main(){queque q ;while(1){string str="hello\n";q.writeData(str);Sleep(300);}}扩展:把队列的字符串换成message就变成了消息队列。
起始没有什么难的,只是你知不知道。工程的下载地址:
http://www.pudn.com/detail.asp?id=2595305,也可以向我索要。
0 0
- 如何实现队列
- 如何实现一个循环队列
- 如何实现一个循环队列
- 如何实现一个循环队列
- 如何实现一个循环队列
- 如何实现一个循环队列
- 如何实现一个循环队列
- 如何实现一个循环队列
- 如何使用堆栈实现队列
- RabbitMQ如何实现延迟队列?
- Java如何实现queue队列?
- RabbitMQ如何实现迟队列
- 如何实现 :双栈实现队列 双队列实现栈
- 如何两个栈实现队列?两个队列实现栈?
- 如何两个栈实现队列?两个队列实现栈?
- 到底什么是消息队列?Java中如何实现消息队列?
- 如何实现java文件队列下载
- 如何基于RabbitMQ实现优先级队列
- 使用TCP协议写一个可以上传文件的服务器和客户端
- 输入一个字节内的数(0~255)和移动位数。输出移位结果(要求循环移位)提示:系统自带的移位都是非循环的
- hdu3785 寻找大富翁
- 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- OpenGL基础图形编程
- 如何实现队列
- 家庭影院和音频选项的趋势在2013
- UVA662- Fast Food
- HIT 2255 Not Fibonacci(矩阵快速幂)
- 网线制作
- 宝利通音频会议和免提电话对于商务
- python27在cmd命令行中出现UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position
- 宏达其中X S720e采用了Beats Audio锁定的GSM Android智能手机
- sscanf函数用法