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"

Reply via email to