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