マルチスレッドプログラミング相談室 その8at TECHマルチスレッドプログラミング相談室 その8 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト571:デフォルトの名無しさん 11/01/25 23:02:03 すみません、spin-lockをしている間にCPUの使用率を下げる方法を知っている方はいますか? 調べてみると、rep;nop命令やSSEのpause命令をがそれに該当するように思えるのですが、 使ってみても何ら変わりませんでした。 スピンロックつかっわないとは思うんだけど。 自作のスレッドバリア関数(自作のspin_lock)を作って、 たとえば、 if(threadnum=5) sleep(10); my_barirrer(); とするとスレッド5を待っている間は5以外のCPU使用率が100%近くなってしまいます。 それに対してOpenMP使った場合では、 if(threadnum=5) sleep(10); #paragma omp barirrer だと待っている間はCPU使用率は殆ど変わりません。 ちなみに自作のspinlockは下記のような感じです。 if(thread_num == 0) { asm volatile( "Loop1:\n\t\t" "movl (%0), %%eax\n\t\t" "movl (%1), %%ebx\n\t\t" "lfence\n\t\t" "cmpl %%ebx, %%eax\n\t\t" "rep;nop\n\t\t" "jne Loop1\n\t\t" : :"r"(&lock->sync), "r"(&lock->maxthreads) :"memory","%eax","%ebx" ); というか、これって間抜けですかね? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch