日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核

發(fā)布時間:2024/4/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方網址:http://api.zeromq.org/4-0:zmq

zmq(7)      0MQ Manual - 0MQ/3.2.5

Name

zmq?–??MQ?輕量級消息傳輸內核

Synopsis

#include <znq.h>cc [flags] files –lzmq [libraries]

Description

?MQ輕量級消息傳輸內核是一個從標準socket接口的擴展而來的鏈接庫,這些接口通常是由一些專門的傳送中間設備來提供。?MQ提供了一個步消息傳送、多模式消息傳送、消息過濾(訂閱)、對多種傳輸協(xié)議無縫接入的集合。

本文檔呈現了?MQ的概念,描述了?MQ是怎樣對標準socket進行抽象并為?MQ庫提供的函數提供了一個參考手冊。

Context

在使用任何?MQ庫函數之前,必須創(chuàng)建一個?MQ?context。在結束應用程序時,必須銷毀(刪除)這個context。一下函數是用來對context進行操作的。

●?創(chuàng)建一個新的context

zmq_ctx_new(3)

●?操作context的屬性

zmq_ctx_set(3)?zmq_ctx_get(3)

●?刪除一個context

zmq_ctx_destroy(3)

●?監(jiān)視一個context

zmq_ctx_set_monitor(3)

以下被棄用的函數也可以用來創(chuàng)建和刪除context

●?初始化一個context

zmq_init(3)

●?終結一個context

zmq_term(3)

Thread?safety(線程安全)

?MQ?context?是線程安全的,可以根據需要盡可能任意的被多個線程共享,而不需要在調用端添加請求鎖。

除非把一個socket的內存整體的從過一個線程移動到一個線程中,否則單個的socket不是線程安全的。事實上,這就意味著,應用程序可以在一個線程中用函數zmq_soc?ket?()創(chuàng)建一個socket,然后把它傳遞給一個新創(chuàng)建線程,作為這個線程初始化時的一部分。比如,你可以把一個結構體作為一個參數傳遞給函數pthread_create()?。

Multiple?contexts

在一個應用程序中可以有多個context共存。這樣應用程序在對context直接進行操作的同時,還可以使用任意多其它庫或者模塊,這些模塊本身也在像上文中提到的那樣線程安全的使用?MQ。

Messages

一個?MQ的消息在應用程序之間或者在同一個程序的不同模塊之間傳輸的是一個離散的消息單元。?MQ消息沒有內部的結構,并且從?MQ自身的角度來看,消息被看作是不透明的二進制數據。

下面的函數用來對消息進行操作:

●?初始化一個消息

zmq_msg_init(3)??zmq_msg_init_size(3)??zmq_msg_init?_data(3)

●?發(fā)送和接收消息

zmq_msg_send(3)??zmq_msg_recv(3)

●?釋放消息

zmq_msg_close(3)

●?獲取消息

zmq_msg_data(3)??zmq_msg_size(3)??zmq_msg_mor?e(3)

●?設置消息屬性

zmq_msg_get?(3)??zmq_msg_set?(3)

●?消息處理

zmq_msg_copy(3)??zmq_msg_move(3)

Sockets

?MQ?sockets?使用一種抽象的異步消息隊列,這通過準確的基于socket類型語義方式實現。查詢zmq_socket?(3)函數可以看到都提供了哪些socket類型可使用。

以下提供的函數用來對socket進行操作:

●?創(chuàng)建一個socket

zmq_socket?(3)

●?關閉一個socket

zmq_close(3)

●?操作socket屬性

zmq_getsockopt?(3)??zmq_setsockopt?(3)

●?指定socket 消息流

zmq_bind(3)??zmq_connect?(3)

●?發(fā)送與接收消息

zmq_msg_send(3)??zmq_msg_recv(3)??zmq_send(3)??zmq_recv(3)

Input/output?multiplexing?(多路輸入/輸出)

?MQ為?MQ?socktes和標準socktes均提供了一種使應用程序進行多路輸入/輸出的機制。這種機制映射而來標準的poll()系統(tǒng)調用,在zmq_poll(3)中有更詳細的描述。

Transports

一個?MQ?socket?可以使用多種不同的基礎傳輸機制。每種傳輸機制適合于具體的使用目的,并且每種方式都有它自己的優(yōu)點和缺點。

●?單一傳輸使用TCP

zmq_tcp(7)

●?可靠的多路廣播傳輸使用?PGM

zmq_pgm(7)

●?進程內部的本地傳輸

zmq_ipc(7)

●?進程內部(線程內部)的本地傳輸

zmq_inproc(7)

Proxies

?MQ提供了代理來創(chuàng)建扇入和扇出的拓撲方式。一個代理把frontend?socket鏈接到backend?socket,并且不透明的在兩個sockte之間傳輸所有的消息。代理可以不透明的獲取第三方的所有傳輸數據。你可以使用zmq_proxy(3)?在應用程序中使用代理。

Error?handling

?MQ庫函數使用POSIX系統(tǒng)中的標準規(guī)定來獲取錯誤信息。通常來說,這就意味著?MQ庫函數會返回NULL(如果是返回指針類型)或者返回一個負值(如果是返回int類型),而真正的錯誤值會存儲在errno變量中。

在非POSIX系統(tǒng)中,開發(fā)者們可能會經歷errno變量當前值的情況。zmq_errno()函數就是用來解決這樣的問題的。更多的細節(jié)請查看zmq_errno(3)函數。

zmq_strerror()函數用來將?MQ指定的錯誤值轉換為字符串類型的信息,更多的細節(jié)請查看函數zmq_strerror(3)

Miscellaneous

下面是一些其余的函數:

●?返回?MQ?庫的版本號

zmq_version(3)

Language?bindings

?MQ庫提為各種語言提供了可供調用的接口。本文檔描寫的借口可以用來給C程序猿使用。本文的意圖旨在,使用其它語言的?MQ使用者們應該能夠通過本文聯(lián)系到他們自己的語言版本。

語言版本(C++、Python、PHP、Ruby、Java等等)被?MQ社團的其它成員提供,你可以在?MQ網站上找到他們。

Authors

This??MQ?manual??page?was?written?by?Martin?Sustrik?<?sustrik@250bpm.com?>?,?MartinLucina?<?martin@lucina.net?>?,?and?Pieter??Hintjens?<?ph@imatix.com?>?.

Resources

Main?website:http://www.zeromq.org/

Report??bugs??to??the??MQ?development??mailing??list:<?zeromq-dev@lists.zeromq.org>

Copying

Free?use?of?this?software?isgranted?under?the?terms?of?the?GNU?Lesser?General??Public?License

(LGPL).?For?details?see?the?files?COPYING?and?COPYING.?LESSER?included?with?the??MQ?distribution.

Website?design?and?content?is?copyright?(c)?2007-2012?iMatix?Corporation.?Contactus??for?professional?support.?Site?content?licensed?under?the?Creative?Commons??Attribution-Share?Alike?3.0?License?.??MQ?is?copyright?(c)?Copyright?(c)?2007-2012?iMatix?Corporation?and?Contributors?.??MQ?is?free?software?licensed?under?the??LGPL.??MQ,?ZeroMQ,?and?0MQ?are?trade?marks?of?iMatix?Corporation.?Terms?of?Use?—?Privacy?Policy

?

更多 ZeroMQ APIhttp://www.cnblogs.com/fengbohello/p/4230135.html?

?

譯者:風波

mail : fengbohello@qq.com

?

總結

以上是生活随笔為你收集整理的ZeroMQ接口函数之 :zmq - 0MQ 轻量级消息传输内核的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。