pthread

pthread で タイマスレッドの実装

pthread で 指定したタイムアウト時間にコールバック関数を実行するタイマスレッドを実装。 nanosleep で 10ms 毎に起床しタイマアウトをチェックする。起床タイミングは nanosleep の性能 によるので、古い Linux とかだと正確に 10ms にならない。 10 ms …

pthread で itron ライクな sng_msg と rcv_msg (例)

http://d.hatena.ne.jp/l1o0/20100119/1263910139 の使用例 #include <mbox_test.h> #define NUM_OF_THREAD 3 void test_example_init() { int ercd; int i; u_int mbox_ids[NUM_OF_THREAD]; ercd = init_mbox_table(); if (E_OK != ercd) { fprintf(stderr, "init_mbox_t</mbox_test.h>…

nanosleep の精度

nanosleep が pthread のスケジューリングポリシーと優先度で違いが出るか実験。結果は、変わらない(当たり前?)。それより、 10 ms の nanosleep からオーバヘッド 1ms 程度以内 で復帰できるとは最近の Linux は精度があがってる。 #include <stdio.h> #include <stdlib.h> #in</stdlib.h></stdio.h>…

pthread で itron ライクな sng_msg と rcv_msg (ソースコード)

pthread で itron ライクなメッセージ機能の実装の続き http://d.hatena.ne.jp/l1o0/20100118/1263812821メモリブロックは malloc 使用。リングバッファをメールキューとして、リングバッファのアクセスを mutex でガード。 pthread_cond_signal で送信通知…

pthread で itron ライクな sng_msg と rcv_msg

pthread で itron ライクなメッセージ機能の実装。とりあえずヘッダファイル。メールボックスの数は NUM_OF_MBOX 、メールキューの大きさは NUM_OF_MSG で決め打ちにした。 #ifndef _MBOX_H_ #define _MBOX_H_ #define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #inc</stdlib.h></stdio.h>…