Overhead of pthread mutexes?

前端 未结 9 1848
旧时难觅i
旧时难觅i 2020-12-13 18:46

I\'m trying to make a C++ API (for Linux and Solaris) thread-safe, so that its functions can be called from different threads without breaking internal data structures. In m

9条回答
  •  伪装坚强ぢ
    2020-12-13 19:10

    I was curious about the expense of using a pthred_mutex_lock/unlock. I had a scenario where I needed to either copy anywhere from 1500-65K bytes without using a mutex or to use a mutex and do a single write of a pointer to the data needed.

    I wrote a short loop to test each

    gettimeofday(&starttime, NULL)
    COPY DATA
    gettimeofday(&endtime, NULL)
    timersub(&endtime, &starttime, &timediff)
    print out timediff data
    

    or

    ettimeofday(&starttime, NULL)
    pthread_mutex_lock(&mutex);
    gettimeofday(&endtime, NULL)
    pthread_mutex_unlock(&mutex);
    timersub(&endtime, &starttime, &timediff)
    print out timediff data
    

    If I was copying less than 4000 or so bytes, then the straight copy operation took less time. If however I was copying more than 4000 bytes, then it was less costly to do the mutex lock/unlock.

    The timing on the mutex lock/unlock ran between 3 and 5 usec long including the time for the gettimeofday for the currentTime which took about 2 usec

提交回复
热议问题