同じプロセス内のスレッド間の通信に使用される、プログラム内に多数の FIFO キューを作成する必要があります。
この目的のために pipe() を使用できると思います。このようにして、キューからノードをフェッチするスレッドで select または poll を使用できるからです。
int* fd_pipe = (int*)malloc(2*sizeof(int));
pipe(fd_pipe);
問題は、各ノードが構造体であるため、ポインターをキューに入れる方法です。ポインターをキューに入れたいのですが、次のようなものです。
typedef{ struct パケット *pkt; 構造体情報 *info; int シーケンス; }ノード;
on threads which put node into the queue:
Node* node = (Node*)malloc(sizeof(Node));
Node->info = ...;
Node->seq = ...;
Node->pkt = ...;
write(fd_pipe[1], node, sizeof(node));
on threads which read node from the queue:
char buf[1000];
read(fd_pipe[0], buf, sizeof(node))
Node* mynode = (Node*)buf;
次に、mynode が必要です。
私のプログラムに何か問題がありますか?特に厳密なエイリアシングまたは駄洒落タイプの問題? ありがとう!