Здравствуйте Serop, Вы писали:
S>1 — всегда ли можно посылать в нитку сообщения (PostThreadMessage), независимо от того, есть ли у нее очередь сообщений или нет???? Если очереди нет, а посылать можно, а главное, получать его в нитке тоже можно, то, вновь прешедшее сообщение будет "затирать" предыдущее, необработанное? (а где это одно сообщение хранится? а если хранится одно, почему нет места для других?.. странно это всё, точно нужно умные книжки почитать
Посылать можно всегда. Но возможны следующие варианты. ID нитки не правильный (другими словами нитки с таким ID'ом не существует) или нитка не имеем message queue. В этом случае
PostThreadMessage вернет
FALSE. Понятно, что посланное тобой сообщение пропадет без следа, так как нет получателя. Вариант второй, нитка есть и у нее создана message queue (это двусвязанный список), в этом случае
PostThreadMessage добавит сообщение в конец очереди (причем никого затирать не будет) и сразу вернется, вернув (скорей всего
)
TRUE. Про книжку смотри дальше.
S>2 — Если есть очередь сообщений, всегда ли должен быть "message pump" организованный системой или базовым классом? или он может быть "самодельным"? (думаю, скорее второе)
Не совсем понял, что значит организованный системой, это что ли если у тебя в этой нитке модальный диалог создается или что. Но сообщения из очереди вычитывать нужно (если конечно они туда шлются), как уж ты это организуешь дело твое.
S>3 — опционально не монимаю: правильно ли использовать методику передачи сообщений таким образом между нитями, особенно когда могут возникать замкнутые контуры?... Кажется, что это стратегически неверно, а нужно использовать методу синхронизации потоков (нитей) через эвенты, семафоры и т.д.?
Что значит замкнутые контуры, это два
SendMessage друг дугу или что. Передавать сообщения между нитками можно и нужно, иначе для чего вообще все это было разработано. Существует два типа передачи сообщений, синхронный (
SendMessage) и асинхронный (
PostMesage и асинхронные варианты
SendMessage). Смотри дальше.
S>Я только учусь, поэтому многое не понятно...
S>Может кто порекомендует книжку умную про ЭТО
Почитай Richter, Jeffrey Programming Applications for Microsoft Windows. Любую из редакций. Там есть целый раздел посвященный Window Messaging. И вообще хорошо расписаны методы и способы синхронизации. Думаю, будет очень полезна тебе.