Hi Bruno, On 05.08.22 20:27, Bruno Haible wrote:
Hi Tim,I am at switching wget2 multithreading from C99+glthreads to C11 (threads.h).I hope that you have considered the Gnulib documentation on this topic: https://www.gnu.org/software/gnulib/manual/html_node/Choosing-a-multithreading-API.html
Thanks for the pointer. I used the gnulib API in the past and created API wrappers for libwget, so that apps didn't need to use gnulib directly. Since Wget2 is the only app I know that uses libwget, I recently decided to go with ISO C (C11) in the future and drop the libwget thread API completely.
The rationale was - gnulib is C11, so the libwget code is - less code = less maintenance - the library code just uses the basic thread, condition and mutex APII read that even the MS C compilers / libraries support ISO C thread nowadays,
so ISO C seems OK to me.
The tests work well on Linux (amd64) (Debian unstable/testing/stable, Fedora 35, Arch, Alpine/muslc) with native builds (gcc or clang). But they completely fail when cross-building with MinGW64 (on Debian bookworm).And what's the execution environment? Is it Windows or is it wine? wine is not supported; I've had enough work making it work on Windows.
Testing with wine, as I don't own a Windows license.Have to carry a USB stick to a friend in order to test on real Windows (trying to avoid that).
And yeah, I can fully understand that wine isn't directly supported. It seems to be
a can of worms on it's own.
Also, are you configuring with --enable-threads=windows? If yes, then it should work (on Windows). If not, then if the winpthreads library is found, it will be used; but since this library is broken, some of the tests will hang, crash, or fail. To avoid using this broken library, add this macro invocation to your configure.ac: gl_AVOID_WINPTHREAD
'--enable-threads=windows' does not work with MinGW since 'threads.h' is not available via gnulib then. MinGW also doesn't provide it. It's not 100% clear to me what this option actually does.
I'll use gl_AVOID_WINPTHREAD since there are reports from Windows users regarding multi-threading not working
as expected (using the gnulib API). Thank you, I appreciate your help & hints ! Regards, Tim
Bruno
OpenPGP_signature
Description: OpenPGP digital signature