Необходимо будет настроить Вас IIS (предполагающий, что это - веб-сервер Ваш / с помощью), предоставление доступа от WLAN/LAN до определенных пользователей (или анонимный). Позвольте канавке IIS свой брандмауэр, если у Вас есть тот.
Ваше приложение не должно будет быть изменено, это просто объединяет в сеть проблемную конфигурацию ответа, с которой необходимо будет столкнуться, чтобы позволить доступу только LAN канавки и WLAN.
У вас есть два потока, они обмениваются информацией, да, вам нужен мьютекс, и вам, вероятно, также нужно условное ожидание .
В вашем примере (сравните state_ == ESTABLISHED) указывает, что поток №2 ожидает, пока поток №1 инициирует соединение / состояние. Без мьютекса или условий / событий поток №2 должен непрерывно опрашивать статус.
Потоки используются для повышения производительности (или улучшения отзывчивости), опрос обычно приводит к снижению производительности либо за счет использования большого количества ресурсов ЦП, либо за счет введения латентность из-за интервала опроса.
Да. Если поток a читает переменную, в то время как поток b записывает в нее, вы можете прочитать неопределенное значение. Операции чтения и записи не атомарны, особенно в многопроцессорной системе.
Вообще говоря, нет, если ваша переменная объявлена с "volatile". И ТОЛЬКО если это единственная переменная - в противном случае вам следует быть очень осторожными с возможными расами.
Доступ к перечислению (чтение или запись) должен быть защищен.
Другое дело: Если конкуренция потоков меньше и потоки принадлежат одному процессу, то критическая секция будет лучше, чем мьютекс.
Это зависит.
В языке C ++ ничего не говорится о потоках или атомарности.
Но на большинстве современных ЦП чтение целого числа является атомарной операцией, которая означает, что вы всегда будете читать согласованное значение, даже без мьютекса.
Однако , без мьютекса или какой-либо другой формы синхронизации, компилятор и ЦП могут свободно переупорядочивать операции чтения и записи, так что все более сложное , все, что связано с доступом к нескольким переменным, в общем случае все еще небезопасно.
Предполагая, что поток записи обновляет некоторые данные, а затем устанавливает целочисленный флаг, чтобы сообщить другим потокам, что данные доступны, это можно изменить, чтобы установить флаг перед обновлением данных. Если вы не используете мьютекс или другую форму барьера памяти.
Поэтому, если вы хотите правильного поведения, вы не должны ' Мне нужен мьютекс как таковой, и нет проблем, если другой поток записывает в переменную, пока вы ее читаете. Это будет атомарно, если вы не работаете с очень необычным процессором. Но вам действительно нужен какой-то барьер памяти, чтобы предотвратить переупорядочение в компиляторе или процессоре.
на самом деле нет причин блокировать доступ к объекту для чтения. вы хотите заблокировать его только во время записи. это именно то, что блокирует читатель-писатель. он не блокирует объект, пока нет операций записи. это улучшает производительность и предотвращает взаимоблокировки. см. следующие ссылки для более подробных объяснений: