Можно ли отправлять несколько потоков в один и тот же сокет? будет ли чередование потоков или будет блок сокета в первом потоке (при условии tcp)? большинство мнений, которые я нашел, похоже, предостерегают от этого для очевидных опасений чередования, но я также нашел несколько комментариев, в которых говорится об обратном. чередуются опасения о переносе из winsock1 и являются ли они обоснованными для winsock2? есть ли способ настроить winsock2-сокет, который позволит избежать локальной синхронизации?winsock 2. безопасность потока для одновременной отправки. tcp
два противоположных мнения ниже ... кто прав?
комментарий 1
«Winsock 2 реализации должны быть полностью поточно. Одновременное чтение/запись в разных потоках удастся, или не с WSAEINPROGRESS, в зависимости от настройки перекрытой флага, когда создается сокет. В любом случае по умолчанию создаются перекрывающиеся сокеты, поэтому вам не нужно беспокоиться об этом. Убедитесь, что вы не используете NT SP6, если ур на SP6a, вы должны быть в порядке! "
комментарий 2
«То же DLL не получает доступ к нескольким процессам как внедрения Windows 95. Каждый процесс получает свою собственную копию записываемого сегмента данных для DLL. модель «все процессы доля» была старая модель Win16, которая, к счастью, мертв и похоронен сейчас ;-)»
с нетерпением ждем ваших комментариев! jim
~ edit1 ~ , чтобы уточнить, что я подразумеваю под чередованием. thread 1 отправляет сообщение msg «Hello» 2 отправляет msg «world!». Получатель получает: «Милый мир!». это предполагает, что оба сообщения НЕ отправляются в цикле while. Это возможно?
Я уверен, что чередование (термин старой школы может быть сродни мультиплексированию) таким способом. Но я не слишком уверен, что хочу принять эту задачу. Ваш приемник должен был бы знать, как «кусочки головоломки» должны быть возвращены вместе. – IAbstract
hi dboarman, rgt. Я не пытаюсь достичь этого, я пытаюсь избежать этого. что я имел в виду под вопросом, «возможно ли это?», было: «Действительно ли физически возможно, чтобы winsock2 разрешил этот сортировать смешение нескольких вызовов отправки в одном и том же сокете?» как вы можете видеть из первого комментария в моем вопросе, цитируемый человек, кажется, говорит, что это невозможно, в результате чего поток, вызывающий функцию отправки, пытающуюся сделать это, потерпит неудачу с WSAEINPROGRESS. трудно задавать вопрос (и отвечать также), не думая о дизайне, но я пытаюсь понять его с более низкого уровня. Благодарю. – jim
Характер tcp не позволил бы ... отправить по * потоку * происходит специально на *, что * thread. если вы перекачиваете msg на метод отправки, он остается на этом потоке ... – IAbstract