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