Здравствуйте. Есть несколько вопросов: * как-то изучал ловушки, и столкнулся с разделяемыми между процессами сегментами. Насколько я понял, эти сегменты в exe-файле отмечаются каким-то особым флагом, и для всех приложений, которые применяют LoadLibrary к такому исполняемому файлу они вместо копирования в каждый вызвавший процесс (как ведут себя dll-данные), ведут себятак же, как и dll-код - размещается только одна копия, на которую ссылаются все процессы. В Visual studio есть директива #pragma data_seg(".Shared"). Этим "флагом" в испоняемом файле является только имя секции? Или это ввели просто для удобства в VC? Где можно почитать про Shared segments? Есть ли какой-нибудь аналог этого для Линукс? * и второй вопрос о потоках и очереди сообщений. В msdn сказано, что Где можно почитать про очередь сообщений (взгляд изнутри), кроме как в ядерном отладчике? Возможно ли создать поток без очереди сообщений, если та не нужна? Насколько эффективно она реализована в Windows? Может есть случаи, когда лучше использовать самоделки, наподобие тех же shared-сегментов (для разных процессов) или разделяемых переменных для потоков, выставляя синхронизирующие объекты, наподобие событий? Спасибо за ответы
Правильнее делать #pragma section(".sect_name", shared, read, write) нет, флаг задается в таблице секций в PE-заголовке Это не будет работать. Нужно дополнительно задать атрибуты секции - #pragma comment(linker, "/section:.shared,RWS") http://msdn.microsoft.com/en-us/library/h90dkhs0(VS.80).aspx У Рихтера было немного.
Поток изначально создается без очереди сообщений. Очередь создастся при первом вызове GetMessage или PeekMessage в потоке.