Я так понимаю нужен либо tun либо tup адаптер, или оба?
я сторонню библиотеку указал в Additional include Directories
По какой логике надо искать ?
S1 s1 = (S1){1, 1};
printf("A: %d, B: %d", s1);
стоит учесть внутреннюю реализацию функции range?
Попытался убрать return у GetLastError, однако ничего также не изменилось
// формируем командную строку
printf(lpszComLine, ...);
Не знаю как устроены мьютексы и condvarы, исходники ядра линукс не смотрел. Не уверен, что там сигналы, т.к. сигналов ограниченное количество, а тех же condvarов вы можете сделать у себя в приложении сколько угодно. Впрочем, не настаиваю.
На сколько я понимаю, в наиболее типичном применении как раз и будет лучший случай, т.к. система после yieldа, скорее всего, сразу уберет поток с исполнения и поставит в конец очереди, а т.к. потоки в примере с одним и тем же приоритетом, то следующий раз очередь на выполнение для потока b дойдет только после потока a.
Тут много допущений, которые надо проверять, и возможно в конкретной системе ТС будет не такое поведение.
На сколько я знаю под виндой нет родного condvar, поэтому реализации наверняка используют те самые WaitForSingleObject и Event, так что это по сути то же самое. Только имеющее стандартный интерфейс. Согласен - мьютекс надо лочить, это дает немного оверхеда. Для винды я видел пару реализаций condvar, в то время когда MSVS еще не дорос до собственной, а С++11 уже вышел.
В обычном случае лично я предпочту использовать стандартный интерфейс, чем платформозависимый.
Но если это критическая к скорости выполнения задача, то возможно стоит использовать родное решение для конкретной платформы, но только в случае если стандартное заметно проигрывает с скорости.