How does this compare with Eric B's proposal at https://gcc.gnu.org/legacy-ml/gcc-patches/2019-06/msg01840.html ?
It would be good if we can accept one of them for GCC 13, but I don't know Windows well enough to determine which is better. On Sat, 1 Oct 2022 at 19:35, LIU Hao via Libstdc++ <libstd...@gcc.gnu.org> wrote: > > Greetings. > > After some years I think it's time to put on this topic again. > > This patch series is an attempt to add a new thread model basing on the > mcfgthread library > (https://github.com/lhmouse/mcfgthread), which provides efficient > implementations of mutexes, > condition variables, once flags, etc. for native Windows. > > > The first patch is necessary because somewhere in libgfortran, `pthread_t` is > referenced. If the > thread model is not `posix`, it fails to compile. > > The second patch implements `std::thread::hardware_concurrency()` for > non-posix thread models. This > would also work for the win32 thread model if `std::thread` would be > supported in the future. > > The third patch adds the `mcf` thread model for GCC and its libraries. A new > builtin macro > `__USING_MCFGTHREAD__` is added to indicate whether this new thread model is > in effect. This grants > `std::mutex` and `std::once_flag` trivial destructors; > `std::condition_variable` is a bit > unfortunate because its destructor is non-trivial, but in reality no cleanup > is performed. > > > I have been bootstrapping GCC with the MCF thread model for more than five > years. At the moment, C, > C++ and Fortran are supported. Ada is untested because I don't know how to > bootstrap it. Objective-C > is not supported, because threading APIs for libobjc have not been > implemented. > > Please review. If there are any changes that I have to make, let me know. > > > -- > Best regards, > LIU Hao