Показать сообщение отдельно
Старый 28.10.2013, 01:53   #13
Пётр
Нуждающийся
 
Регистрация: 23.05.2007
Сообщений: 95
Написано 34 полезных сообщений
(для 53 пользователей)
Ответ: Пример сервера на PureBasic

В коде есть несколько потенциальных "глючных" мест.
If CreateThread(@ReceiveTCPdata(),0) = 1
С чего вдруг функции CreateThread() возвращать 1?
В справке ясно написано.
Возвращаемое значение.
Номер созданного потока, или ноль если новый поток создать невозможно. Этот номер необходим, если вы хотите контролировать поток с помощью других функций этой библиотеки.
Номер потока не обязательно равен числу 1. В итоге даже при успешном создании потока, прога завершится с сообщением об ошибке.

UnlockMutex(MutexIn)
DeleteElement(QueueIn())
Почему сначала расблокируется мьютекс, а затем удаляется элемент? Должно быть наоборот. Иначе возможна ситуация что будет удален не тот элемент, если другой поток обратится в списку и изменит текущий элемент.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Пётр за это полезное сообщение:
Devilox (28.10.2013), impersonalis (28.10.2013)