Kdbplus-q-inter-process-communication
提供:Dev Guides
Q言語-プロセス間通信
KDB +では、1つのプロセスがプロセス間通信を介して別のプロセスと通信できます。 Kdb +プロセスは、同じコンピューター、同じネットワーク、またはリモートにある他のkdb +に接続できます。 ポートを指定するだけで、クライアントはそのポートと通信できます。 ネットワーク上でアクセス可能で、接続をリッスンしている限り、任意の q プロセスは他の q プロセスと通信できます。
- サーバープロセスは接続をリッスンし、リクエストを処理します
- クライアントプロセスが接続を開始し、実行するコマンドを送信します
クライアントとサーバーは、同じマシン上にあっても、異なるマシン上にあってもかまいません。 プロセスは、クライアントとサーバーの両方にすることができます。
コミュニケーションは、
- 同期(結果が返されるのを待つ)
- 非同期(待機も結果も返されません)
サーバーの初期化
*q* サーバーは、リッスンするポートを指定することにより初期化されます。
q –p 5001/command line
\p 5001 /session command
通信ハンドル
通信ハンドルは、「:」で始まり、次の形式の記号です-
`:[server]:port-number
例
`::5001 /server and client on same machine
`:jack:5001 /server on machine jack
`:192.168.0.156 /server on specific IP address
`:www.myfx.com:5001 /server at www.myfx.com
接続を開始するには、整数接続ハンドルを返す関数「hopen」を使用します。 このハンドルは、後続のすべてのクライアント要求に使用されます。 たとえば-
q)h:hopen `::5001
q)h"til 5"
0 1 2 3 4
q)hclose h
同期および非同期メッセージ
ハンドルを取得したら、同期的または非同期的にメッセージを送信できます。
同期メッセージ-メッセージが送信されると、待機して結果を返します。 その形式は次のとおりです-
handle “message”
非同期メッセージ-メッセージの送信後、待機して結果を返すことなく、すぐに次のステートメントの処理を開始します。 その形式は次のとおりです-
neg[handle] “message”
関数呼び出しやselectステートメントなどの応答を必要とするメッセージは、通常、同期形式を使用します。一方、テーブルに更新を挿入するなど、出力を返す必要のないメッセージは非同期になります。