Я так понял если не переполнять буфер сокета, то и гонки данных не будет?
Сокет сам выстроит дейтаграммы в очередь в своем буфере?
Сокет сам выстроит дейтаграммы в очередь в своем буфере?
Почему у некоторых не работает пока остается загадкой.. "на моей машине работает", "у меня такая же нога - а не болит". Что ваша программа-то делает? Проверяет ли она, сколько ядер у процессора, например? Скачивает ли из интернета конфиги? Может, из-за локали какие-то функции используют запятую вместо десятичной точки и какие-то числа из конфигов оказываются в 1000 раз больше и вся логика программы идет чертом. Может, у вас там data race из-за ошибки в многопоточности и по таймингам оно все портит только на процессорах определенной модели со слабыми кулерами и отключенным в биосе hyperthreading.
f (map[y][x] == '%' || map[y][x] == ' ' || map[y + 2][x] == ' ' || map[y - 2][x] == ' ' || map[y][x + 2] == ' ' || map[y][x - 2] == ' ')
это цыкл используеться чтоб в цетре комнаты ">' лесницу поставить
А по отлажывать не получаеться
printf("loop1");
и т.д. (с разными строками в разных местах) - тогда программа не просто повиснет, а будет выводить на экран, что она делает. Это называется отладочный вывод. Так вы поймете, где программа виснет.
strlen - выдает количество символов в строке. Но памяти для строки надо на 1 байт больше - ведь есть же еще завершающий '\0'. Так что вот эта вот strcpy пишет 0 за границу массива.