Hi, I finally have worked out first patch to make our pthread library support process shared pthread objects:
http://people.freebsd.org/~davidxu/pshared/patch1.diff Many changes are related to redesigned pthread condition variable, these changes try to eliminate extra context switch when pthread_cond_signal is called which could reduce performance. There are two parts in the condition variable implementation. A pure usermode condition variable and kernel-based condition variable. All priority protected, inherited mutexs and process shared mutex will use kernel base condition variable, for a normal mutex, the usermode condition variable is used. Both user-mode and kernel-based try to migrate a thread from condition variable wait queue to mutex wait queue. Another added feature is robust mutex support, http://www.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_setrobust.html Which I think is mostly used for process-shared mutex. In the patch, if mutex attribute is robust, the thread library also uses kernel base condition variable which does not have internal lock in userland. Regards, David Xu _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"