当前位置:  技术问答>linux和unix

如何在windows 平台上实现消息队列(多线程环境)

    来源: 互联网  发布时间:2015-07-10

    本文导语:  最好给源代码,给出思路也行. msgQCreate( ) – create and initialize a message queue msgQDelete( ) – delete a message queue msgQSend( ) – send a message to a message queue msgQReceive( ) – receive a message from a message queue 1. msg...

最好给源代码,给出思路也行.

msgQCreate( ) – create and initialize a message queue
msgQDelete( ) – delete a message queue
msgQSend( ) – send a message to a message queue
msgQReceive( ) – receive a message from a message queue

1. msgQCreate
create and initialize a message queue,queue pended tasks in FIFO order
MSG_Q_ID msgQCreate
(
int maxMsgs, /* max messages that can be queued */
int maxMsgLength, /* max bytes in a message */
)

2.msgQDelete
//delete a message queue
STATUS msgQDelete
(
MSG_Q_ID msgQId /* message queue to delete */
)

3.

NAME msgQReceive( ) – receive a message from a message queue
int msgQReceive
         (
         MSG_Q_ID msgQId, /* message queue from which to receive */
         char * buffer, /* buffer to receive message */
         UINT maxNBytes, /* length of buffer */
         int timeout /* ticks to wait */
         )
DESCRIPTION This routine receives a message from the message queue msgQId. The received message is
copied into the specified buffer, which is maxNBytes in length. If the message is longer
than maxNBytes, the remainder of the message is discarded (no error indication is returned).

The timeout parameter specifies the number of ticks to wait for a message to be sent to the
queue, if no message is available when msgQReceive( ) is called. The timeout parameter
can also have the following special values:
         NO_WAIT (0)
         return immediately, even if the message has not been sent.
         WAIT_FOREVER (-1)
         never time out.
WARNING This routine must not be called by interrupt service routines.
RETURNS The number of bytes copied to buffer, or ERROR.

4.msgQSend( )
send a message to a message queue
         STATUS msgQSend
         (
         MSG_Q_ID msgQId, /* message queue on which to send */
         char * buffer, /* message to send */
         UINT nBytes, /* length of message */
         int timeout, /* ticks to wait */        
         )
DESCRIPTION This routine sends the message in buffer of length nBytes to the message queue msgQId. If
any tasks are already waiting to receive messages on the queue, the message will
immediately be delivered to the first waiting task. If no task is waiting to receive
messages, the message is saved in the message queue.
The timeout parameter specifies the number of ticks to wait for free space if the message
queue is full. The timeout parameter can also have the following special values:
         NO_WAIT (0)
         return immediately, even if the message has not been sent.
         WAIT_FOREVER (-1)
         never time out.

|
思路:
    创建一个窗口类,本身就带有消息队列,创建多线程;
    用postmessage、sendmessage来传递消息到线程中

    
 
 

您可能感兴趣的文章:

  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • 说说windows线程和linux线程的区别?
  • 用什么方法可以查看在windows下jvm下运行当前java程序的线程数和线程名称?
  • 用pthread_create建立线程后如何让线程运行的函数在create完了之后才实际运行 相当与windows下的CREATE_SUSPENDED ??
  • Linux的线程和windows 有什么区别?
  • 各位大侠,想问问驱动程序中(linux或者windows平台)可否使用线程?
  • Windows下的PHP安装文件线程安全和非线程安全的区别
  • 请问WINDOWS 和LINUX/UNIX 的进程、线程的区别
  • linux下的线程中有像windows的SuspendThread和SuspendThread的函数吗?
  • 如何在linux线程中实现windows下PostThreadMessage的功能
  • windows下面的线程代码怎么移植到unix下面去?
  • Windows98下可以同时执行几个Java Servlet/JSP线程?
  • 关于Linux的线程和Windows的线程比较
  • ■■在Linux下有无类似Windows下Netants,Getright等多线程下载工具呀,免得我下载大多转到Windows下,谢谢!
  • 如何:对Windows 窗体控件进行线程安全调用
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix是事件消息驱动的吗,就像windows一样?
  • window 如何给linux发消息呢?
  • Windows下的消息时间事件机制在Unix下如何实现?
  • 怎样得到一个X Windows下程序运行的消息!
  • windows下有MFC,有消息机制。linux对应的是什么?各有什么优劣?
  • Windows消息传递机制详解
  • WinDows8最新版文件夹加密 iis7站长之家
  • 在Linux/Unix里有和Windows里的消息系统对应的东西么?
  • 如何在windows客户端(wensphere MQ 5.3)向linux服务器端发送消息(急)
  • java命名空间java.awt类window.accessibleawtwindow的类成员方法: window.accessibleawtwindow定义及介绍
  • 怎么在Linux下改windows系统文件啊,我把windows的BOOT.INI改了,windows启动不了
  • java命名空间java.awt类window的类成员方法: window定义及介绍
  • x-windows如何安装在linux(rdehat9)上面呢,是不是x-windows也分windows和linux版本的吗?
  • java命名空间java.awt.event类windowevent的类成员方法: window_activated定义及介绍
  • linux和windows串口问题!?linux向windows端发送,第一次write正常,继续write,windows接收到的就变成乱码了,这是什么原因??????
  • java命名空间java.awt.event类windowevent的类成员方法: window_deactivated定义及介绍
  • redhat7.3+window me +windows xp 共存,MBR在windows me 分区,现在要重裝windwos me,怎么办?
  • java命名空间java.awt.event类windowevent的类成员方法: window_gained_focus定义及介绍
  • 装了Linux和Windows,怎样默认进入Windows
  • java命名空间java.awt.event类windowevent的类成员方法: window_lost_focus定义及介绍
  • Linux与windows共存时,如何将Windows设置为默认启动系统?
  • java命名空间java.awt类window的类成员方法: setvisible定义及介绍
  • 怎样是编好的java application在windows上像windows应用程序一样直接运行
  • java命名空间java.awt类systemcolor的类成员方法: window定义及介绍
  • windows 和linux双系统,重装windows后,无法启动linux?
  • java命名空间javax.accessibility类accessiblerole的类成员方法: window定义及介绍
  • 如何将linux的一台机器加入windows 2000的域?并且通过一windows的机器上网?
  • java命名空间java.awt.event类keyevent的类成员方法: vk_windows定义及介绍
  • 为什么在安装了WINDOWS和LINUX的电脑上,重装WINDOWS会破坏MBR?
  • WinDows8最新版文件夹加密
  • Linux + Windows2000 双启动,Windows2000起不来了,说是文件被破坏,进来看看……


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3