Я строю довольно сложную клиент-серверную систему, поэтому хотелось бы применить многопоточность, скажем на клиенте в одном потоке отправлять heartbeat, а в другом - команду серверу, и при этом использовать только один сокет.
Но нормальное ли это решение?
Для начала поясню, о какой именно путанице я говорю.
Итак, псевдокод то что я отправляю:
send("123456"); // Поток 1
send("ABCDEF"); // Поток 2
Я знаю, что в итоге на принимающую сторону может прийти вот такое:
ABCDEF
123456
То есть я понимаю, что может перепутаться порядок самих сообщений, которые я отправляю.
Когда я попробовал создать много потоков,
я наблюдал такое, значит это действительно так.
И я этого не боюсь.
Но один человек на форуме, если я его правильно понял, утверждает, что все еще хуже.
Говорит, что якобы могут перепутаться сами байты в сообщениях, то есть может прийти и такое:
ABC45F
123DE6
Правда ли это?
Когда я пробовал создать много потоков, то
этого я НЕ наблюдал, сообщений было много, но ни в одном из них байты не смешивались с байтами из других сообщений.
Но не буду надеяться на авось, вот на всякий случай спрашиваю.
Операционная система:
Windows, разных версий и разрядностей, но только Windows, и на сервере и на клиентах.