futex

    24

    1답변

    나는 strace를 가진 과정을 추적 한과 같은 항목을 보았다 : 같은 FUTEX_WAIT 및 FUTEX_WAKE으로 나는 man page for futex에서 보았을 때 futex(0x7ffff79b3e00, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7ffff79b3e00, FUTEX_WAIT_PRIVA

    1

    2답변

    이 방법 (필자는 기능이 몇 가지 추가 매개 변수를해야 할 수도 실현) : void waitUntilNotEqual(volatile int* addr, int value) { while (*addr == value) {} }

    14

    1답변

    리눅스 퓨 텍스가 경합 할 때 시스템이 스핀 록에 많은 시간을 소비한다는 것을 관찰했습니다. 퓨 텍스가 직접적으로 사용되지 않더라도, malloc/free, rand, glib 뮤텍스 호출, futex를 호출하는 다른 시스템/라이브러리 호출을 호출 할 때도 문제가되는 것으로 나타났습니다. 이 있습니까?이 동작을 제거하는 방법은 있습니까? 커널 2.6.32-

    1

    3답변

    Linux 3.0은 futex이라는 시스템 호출을 제공합니다.이 시스템 호출에는 최근의 pthread_mutex 구현을 포함하여 많은 동시성 유틸리티가 기반을두고 있습니다. 코드를 작성할 때마다 항상 기존 구현을 사용할지 직접 작성 할지를 고려해야합니다. 위는 퓨 텍스에 따라 잠금 (뮤텍스, 1 허가 카운팅 세마포어)의 구현과 여러 스레드가 잠금 및 잠금을

    2

    1답변

    슬리핑 스레드를 호출 할 때 대기 시간을 측정하려고했습니다. futex 위에는 많은 동기화 사전 규칙이 개발 되었기 때문에 futex가 항상 더 빠를 것으로 기대하고 있습니다. 그러나, 나의 시험은 반대 결과를주고 있었다. 나는 틀린 것을 한 것이 아닌가하는 것이 궁금하거나 사실은 사실입니다. 에, 시간이 2 개 스레드가 생성 RDTSC에서 반환 된 번호(

    2

    1답변

    64 비트 리눅스에서 sem_t는 32 바이트이지만 futex 구현에서는 8 바이트이면 충분합니까 (glibc sem_post)? 그것이 사실이라면 왜 바이트를 낭비하게합니까? 사실 저는 8 바이트 만 사용하는 사용자 정의 세마포어 구현을 사용하여 하나의 날짜 입력에 대해 하나의 세마포어를 사용할 수 있습니다. 하지만 glibc 구현의 다른 바이트가 단지

    5

    1답변

    리눅스 futex syscall (FUTEX_WAIT 작업)과 관련된 문제가 발생했을 때가 종종 겉으로보기에 일찍 돌아 오는 경우가 있습니다. 문서에 일찍 돌아올 수있는 특정 조건이 지정되어 있지만 (FUTEX_WAKE 제외) 이들 모두에 0이 아닌 반환 값이 있습니다.futex 주소의 값이 일치하지 않으면 시간 초과 대기 시간이 ETIMEDOUT 인 경우

    0

    2답변

    전역 파일 설명자에서 fclose를 호출하면 프로그램이 중단됩니다. 클론에 의해 생성 된 여러 스레드의 종료 후에 발생했습니다. FID와 FILE * fid = fopen("filename", "w"); ... for(int i=0; i<4; i++){ clone((int (*)(void*))do_work, stack[i], CLONE_VM|CLONE

    0

    1답변

    clone()에서 CLONE_THREAD 옵션을 사용하여 스레드가 생성 된 테스트 사례가 있습니다. 여기에 systemcall()에서 SYS_tgkill을 사용해야한다고 가정하는 특정 스레드를 죽이려고 할 경우 여기에 테스트 케이스가 있습니다. 하지만 실제로 커널 공간에서 대기 중이면 kill이 실제로 스레드에 영향을 미칩니 까 (futex_wait)? 나

    2

    1답변

    RHEL5.6에서 berkeley db 4.3 (/usr/lib64/libdb-4.3.so)을 커널 2.6.18과 함께 사용하여 C로 프로그래밍하고 있습니다. -238_xen_AMD64. 내 테스트 (1,000,000 개의 키/값 쌍 작성)에서 DB 작업이 진행되는 동안 한 프로세스가 비정상적으로 종료 (Ctrl + C, 강제 종료 또는 어설 션 실패)하면