Помогите с проблемой. Не завершается `while` цикл при изменении переменной `running`. ``` while (running) { // loop } ``` Использую библиотеку `ulfius` для реализации REST API сервера. Есть функция `thread_server()`, которую из `main()` запускаю в отдельном потоке, в которой запускается `ulfius` сервер. ``` pthread_t tid; pthread_create(&tid, NULL, thread_server, (void *)&tid); ``` Сервер запускаю следующим образом: ``` int ret; ret = ulfius_start_framework(&instance); if (ret == U_OK) { printf("Server started at %d.\n", PORT); } else { printf("Error starting server as %d port.\n", PORT); } while (running) { printf("\r%b", running); } printf("Server halt.\n"); ulfius_stop_framework(&instance); ulfius_clean_instance(&instance); ``` `running` - глобальная переменная типа `bool`. В документации к библиотеке, чтобы сервер не схлопывался используется следующий код. ``` if (ret == U_OK) { getchar(); } ``` Есть callback функция, которая вызывается при обращении к API, в которой я проверяю отправленное пользователем значение, и если оно равняется `quit` присваиваю переменной `running` значение `false`, чтобы сервер закрылся. Если из цикла `while (running) { printf("\r%b", running); }` убрать `printf()`, либо выполнять другие операции, например присвоение `a = 1;` то сервер не закрывается, хотя значение `running` равняется `0`. Я пишу утилиту для внутенного использования, которая общается с Arduino платой посредством библиотеки `libserialport` и в цикле читает данные. Хочу, чтобы утилита по REST получала данные и отправляла их на плату, но не получается реализовать нормальное завершение программы, потому что сервер не умирает. **OS:** Linux