1. 程式人生 > >無等待地從一個訊息佇列中取得訊息, OSQAccept()

無等待地從一個訊息佇列中取得訊息, OSQAccept()

如果試圖從訊息佇列中取出一條訊息,而此時訊息佇列又為空時,也可以不讓呼叫任務等待而直接返回呼叫函式。這個操作可以呼叫OSQAccept()函式來完成。程式清單 L6.25是該函式的原始碼。OSQAccept()函式首先檢視pevent指向的事件控制塊是否是由OSQCreate()函式建立的[L6.25(1)],然後它檢查當前訊息佇列中是否有訊息[L6.25(2)]。如果訊息佇列中有至少一條訊息,那麼就從.OSQOut指向的單元中取出訊息[L6.25(3)]。OSQAccept()函式的呼叫函式需要對OSQAccept()返回的指標進行檢查。如果該指標是NULL值,說明訊息佇列是空的,其中沒有訊息可以 [L6.25(4)]。否則的話,說明已經從訊息佇列中成功地取得了一條訊息。當中斷服務子程式要從訊息佇列中取訊息時,必須使用OSQAccept()函式,而不能使用OSQPend()函式。  

相關推薦

等待一個訊息佇列取得訊息, OSQAccept()

如果試圖從訊息佇列中取出一條訊息,而此時訊息佇列又為空時,也可以不讓呼叫任務等待而直接返回呼叫函式。這個操作可以呼叫OSQAccept()函式來完成。程式清單 L6.25是該函式的原始碼。OSQAccept()函式首先檢視pevent指向的事件控制塊是否是由OSQCreate()函式建立的[L6.25(1)]

一個文件讀取數據到內存,然後再把內存的數據寫入另外一個文件

錯誤代碼 就會 取數據 stream off err sig where 返回值 //從一個文件中讀取數據到內存,然後再把內存中的數據寫入另外一個文件 #include "stdafx.h"#include "stdlib.h" in

03 React快速入門(三)——實現一個輸入框新增完資料後此輸入框內容清除的功能

功能描述:       我們在一個輸入框輸入內容,然後點選新增按鈕,此輸入框的內容就會新增到頁面上,但是此輸入框中還存在上次輸入的內容,我們想在每次輸入新增完成之後,此輸入框中的內容就會清除,如圖:      

RabbitMQ如何在命令列下清除訊息佇列的所有資料

最近在研究 RabbitMQ 訊息佇列, 安裝好進行測試的時候發覺在一個名為 MyRabbitMQ 的訊息佇列中已經插入了大量的資料。 最後不得不找方法清除。 首先定位到 rabbitMQ 安裝目錄的sbin 目錄下。 然後shift+右鍵 。 調出右鍵選單。 選擇在此處開啟

pgrep---以名稱為依據執行程序佇列查詢程序

pgrep命令以名稱為依據從執行程序佇列中查詢程序,並顯示查詢到的程序id。每一個程序ID以一個十進位制數表示,通過一個分割字串和下一個ID分開,預設的分割字串是一個新行。對於每個屬性選項,使用者可以在命令列上指定一個以逗號分割的可能值的集合。 語法 pgrep(選項)(引數) 選項 -o:僅顯示找到

cimutils到核心-(6)VIDIOC_DQBUF(視訊快取佇列取出有資料的buffer)

應用層:     case IO_METHOD_MMAP: CLEAR(buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; if (-1 == xio

List集合練習題 完成getAllDog 方法,一個Animal集合挑選出所有的Dog物件,並把這些物件 放在一個Dog 集合返回。

package cn.sc.test; import java.util.ArrayList; import java.util.List; public class TestAnimal { public static void main(String[] args) { List

Kafka- 訊息佇列【點對點】與【釋出訂閱】區別

1.JMS中定義 JMS規範目前支援兩種訊息模型:點對點(point to point, queue)和釋出/訂閱(publish/subscribe,topic)。 點對點: 訊息生產者生產訊息傳送到queue中,然後訊息消費者從queue中取出並且消費訊息。這裡要注意: 訊息被消費以

(多型問題)一個Animal陣列挑選出所有的Dog物件,並把這些物件放在一個Dog陣列返回

package com.day11_1; import java.util.*; public class Test9 { public static void main(String[] args) { Animal[] as = {

訊息佇列的7個連環炮

訊息佇列7連擊 (1)第一問,你知道不知道你們系統裡為什麼要用訊息佇列這個東西? 答: ①首先是解耦作用 我們先看如果沒有用mq會是什麼情況呢? 接下來,我們需要用mq來改進上面的問題 ②然後mq還有非同步化的作用(減少各系統之間呼叫的時間消耗) 下面先來看

BeanUtils使用:一個map集合,拷貝到javaBean(四)

package beanutil; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; impo

分散式訊息佇列RocketMQ&Kafka -- 訊息的“順序消費”-- 一個看似簡單的複雜問題

在說到訊息中介軟體的時候,我們通常都會談到一個特性:訊息的順序消費問題。這個問題看起來很簡單:Producer傳送訊息1, 2, 3。。。 Consumer按1, 2, 3。。。順序消費。 但實際情況卻是:無論RocketMQ,還是Kafka,預設都不保證訊息

如何一個父串找出子串的個數

題目要求:輸入一個父字串,和一個子字串,編寫程式碼要求能夠實現計算出父串中子串的個數,例如:輸入父字串“hello”,輸入子字串“ll”,輸出結果為1。程式碼如下:#include <stdio.h> #include <string.h> void

一個無序陣列求出第K大/小的數

這個題目可以作為練習寫大/小根堆的實現,不過貌似時間複雜度還是蠻高的。在洛谷上面一道模板題上面好像就超時了幾個點,不知道是不是我實現的問題。那麼除此之外,最容易想到的方法是先對該陣列進行排序,然後取出第K或MAX-K數來。當選擇使用快排的時候,時間複雜度是$O(nlogn)$。但還有一種更優的方法是利用快排劃

一個表格檔案錄入資訊,進行計算後,在檔案輸出這個表格

原始碼: #include <iostream> #include<fstream> #include<string> using namespace std; class student { private:     string nu

JDK1.8--體驗Stream表示式,一個物件集合獲取每一個物件的某一個值返回新集合

xl_echo編輯整理,歡迎轉載,轉載請宣告文章來源。更多IT、程式設計案例、資料請聯絡QQ:1280023003 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!! 開發工具eclipse package com.echo

Confluence 6 一個 XML 備份匯入一個空間

有下面 2 中方法可以匯入一個空間——通過上傳一個檔案,或者從你 Confluence 伺服器上的一個目錄中匯入。上傳檔案僅僅是針對一個小站點的情況。為了取得最好的匯入結果,我們推薦你從伺服器上的目錄上進行恢復。 希望刪除和匯入一個小空間: 進入  > 基本配置(General Configur

一個xib檔案載入另一個xib檔案

在開發中,經常會用到一個需要重複使用的模組,比如好友列表中每個使用者的展示或每條動態,這些都是相同的模版,這樣我們就可以把這個部分提取出來放到一個單獨的.xib中。那麼提取出的.xib如何在其他.xib中使用呢? 接下來就說一下如何在.xib中載入其他的.xib。大概結構是這樣的: 建立專案,專案名稱叫C

cc150:實現一個演算法一個單鏈表返回倒數第n個元素

    實現一個演算法從一個單鏈表中返回倒數第n個元素。    解答         這道題的考點在於我們怎麼在一個單鏈表中找到倒數第n個元素? 由於是單鏈表,所以我們沒辦法從最後一個元素數起,然後數n個得到答案。 但這種最直觀的思路顯然是沒錯的,那我們有沒有辦法通過別

Delphi7 子執行緒傳送訊息到主執行緒觸發事件執行

在對資料庫的操作時,有時要用一個子執行緒來進行後臺的資料操作。比如說資料備份,轉檔什麼的。在主視窗還能同是進行其它操作。而有時後臺每處理一個數據檔案,要向主視窗傳送訊息,讓主視窗實時顯示處理進度在視窗上(可視),同時進行日誌處理等。我用的是下面的方法:[1]用到的API函式: