gcc 4.7.2
c89
こんにちは、
次のコードスニペットにミューテックスロックを適用することについて疑問に思っています。
この関数の他のスレッドをブロックするのでロックしたくないので、従う必要のあるルールはありますか?これは本当に物事を遅くするので。
私は次のCFLAGSでコンパイルしています:
-Wall -Wextra -g -m32 -O2 -D_DEBUG -D_THREAD_SAFE -D_REENTRANT -D_LARGEFILE64_SOURCE
コードスニペット
static void* APR_THREAD_FUNC timeout_duration(apr_thread_t *thd, void *data)
{
apr_status_t rv = 0;
channel_t *channel = NULL;
/*
APPLY LOCK HERE
*/
channel = (channel_t*)data;
/* simulate some work */
apr_sleep(5000000);
LOG_INFO("Channel id [ %d ] Channel name [ %s ] Delay time [ %d ]",
channel->id,
channel->name,
(apr_int32_t)channel->delay_time);
/*
UNLOCK HERE
*/
return NULL;
}
エントリ関数に渡されるデータとしてチャネルを渡します。しかし、これは単なるコピーではないので、私はそれについて本当に心配する必要はありませんか?