On May 13, 2015, at 02:31 , Marvin Humphrey <[email protected]> wrote:
> 
> The branch looks good to me in general.  I have two notes.
> 
> One is that `pthread_yield` is not portable. I tried to run this branch on my 
> OS
> X laptop and it wouldn't compile.

I created a new version of the branch that uses the more portable `sched_yield` 
defined by POSIX.

> The second is that the concurrency abstraction may not map to every host
> elegantly. For example, under Go, running goroutines won't give us
> thread-local storage to hold Err_error. But we can deal with each host
> case-by-case and disable the test if necessary when the time comes.

Yes, I’m aware that my branch breaks the Go bindings and that the general 
approach may be too Perl-centric. Nevertheless, being able to run tests using 
threads from C is a nice feature and it already helped to discover a problem in 
the Perl bindings.

It seems that supporting the global Err variable is a non-trivial issue for the 
Go bindings. In fact, Go doesn’t support thread-local storage, leading to 
clever hacks like this one:

    https://github.com/jtolds/gls

Do you have any thoughts on how to address this issue?

If it’s OK, I merge v2 of the branch as-is and leave the adjustments to the Go 
bindings to you.

Nick

Reply via email to