futex

    1熱度

    3回答

    只寫一個小OMP測試,它無法正常工作的所有時間: #include <omp.h> int main() { int i,j=0; #pragma omp parallel for(i=0;i<1000;i++) { #pragma omp barrier j+= j^i; } return j; } 的j從所有線程編寫的使用

    3熱度

    2回答

    只是將我的應用程序移動到一個新的CentOS服務器。經過很長一段時間的擺弄之後,我無法玩弄編譯或得到任何錯誤。 shell輸出將顯示最後一個文件編譯,然後掛起。我正在運行Scala 0.9.1模塊。 我做了一個strace的過程,這是我得到的。不知道它是否有幫助。 futex(0x410489d0, FUTEX_WAIT, 5403, NULL 任何想法的原因?或者我可以開始排除故障? 謝謝。

    5熱度

    1回答

    我碰到與Linux系統調用futex(FUTEX_WAIT操作)有時會返回初看似沒有原因的問題。該文件規定,可能會導致其早期(沒有FUTEX_WAKE)返回一定的條件,但這些都涉及非零返回值:EAGAIN如果在futex的地址值不匹配,ETIMEDOUT當由中斷時超時,EINTR定時等待(非重啓)信號等,但我看到的0返回值是什麼,比FUTEX_WAKE或線程,其set_tid_address指針指

    0熱度

    2回答

    在全局文件描述符上調用fclose時,程序掛起。 它在克隆創建的幾個線程退出後發生。 下面的順序: FILE * fid = fopen("filename", "w"); ... for(int i=0; i<4; i++){ clone((int (*)(void*))do_work, stack[i], CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHA

    0熱度

    1回答

    在Linux內核源代碼中的futex.c的futex_wake_op function中,我試圖理解控件如何達到this點。發生這種情況時,在上述函數中,futex_atomic_op_inuser返回-EFAULT,並且但uaddr2是可寫的。 但是從futex_atomic_op_inuser的source,我看到它僅在if (!access_ok(VERIFY_WRITE, uaddr, s

    24熱度

    1回答

    我一直在追蹤與strace的進程,並看到條目,如: futex(0x7ffff79b3e00, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7ffff79b3e00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 然而,當我看着man page for futex我只看到條目,如FUTEX_WAIT和FUTEX_W

    0熱度

    1回答

    我有一個測試用例,在clone()中有使用CLONE_THREAD選項產生的線程。如果我想殺死一個特定的線程,我想我們應該在systemcall()中使用SYS_tgkill。但是,如果它在內核空間中等待(例如futex_wait),那麼kill會影響一個線程嗎? 我試圖殺死一個以上述方式創建的線程。但是當SIGKILL發送到相同的整個過程正在被殺死。我缺少使用系統調用(SYS_tgkill,pi

    2熱度

    1回答

    我在C編程,在RHEL5.6上使用berkeley db 4.3(/usr/lib64/libdb-4.3.so),內核爲2.6.18 -238_xen_AMD64。我在測試中(編寫1,000,000個鍵/值對),如果一個進程異常退出(ctrl + c,kill或assert失敗),而db上的操作正在進行中,那麼對該db的後續操作將被阻止開放時。 Strace顯示在打開__db.00x(例如__d

    1熱度

    2回答

    這種方法(我實現的功能可能需要一些額外的參數): void waitUntilNotEqual(volatile int* addr, int value) { while (*addr == value) {} }

    1熱度

    3回答

    // SubFetch(x,y) = atomically x-=y and return x (__sync_sub_and_fetch) // AddFetch(x,y) = atomically x+=y and return x (__sync_add_and_fetch) // CompareWait(x, y) = futex(&x, FUTEX_WAIT, y) wait on