pthread_once が嫌いです。なぜ嫌いかって言うと、こんな感じで、ファイルレベルのグローバル変数やグローバル関数が出現し、また、値を使う場所と初期化コードの位置が離れがちで可読性が下がるから。 static volatile BIO_METHODS *biom = NULL; static void init_biom(void) { biom = BIO_meth_new(BIO_TYPE_FD, "h2o_socket"); BIO_meth_set_write(biom, write_bio); BIO_meth_set_read(biom, read_bio); BIO_meth_set_puts(biom, puts_bio); BIO_meth_set_ctrl(biom, ctrl_bio); } static void setup_connection(...) {