我正在开发一个应用程序跨平台的C/C++ for Solaris(Sparc),AIX(PowerPC)和Red Hat Linux(x86_64),我们在其中使用pthread库。函数pthread_rwlock_timedwrlock/timedrdlock具有相对超时
我需要使用同步超时的读者/作家,所以我使用函数pthread_rwlock_timedwrlock/timedrdlock,因为你必须使用绝对时间。
这是我目前的执行情况和工作正常:
bool nLec1Esc::close (unsigned int timeout){
struct timeval now;
struct timespec strtimeout = {0};
// Get the current time
gettimeofday(&now,NULL);
// Add time for timeout value
strtimeout.tv_sec = now.tv_sec;
strtimeout.tv_nsec = (now.tv_usec+1000UL*timeout)*1000UL;
return (pthread_rwlock_timedwrlock(rwlock, &strtimeout) == 0);
}
我试图提高执行寻找,以提高性能和防止电话每次gettimeofday的,并使用一个固定的相对时间。
我已经看到,可用于Solaris函数pthread_rwlock_reltimedwrlock_np,使用相对超时值。
您是否看到过改进此实现的方法?
在此先感谢。
up!任何用于linux实现的pthread_rwlock_reltimedwrlock_np? – 2015-01-15 13:45:03