Информация об изменениях

Сообщение Re: Unix аналог цикла сообщений Windows от 04.01.2025 9:32

Изменено 04.01.2025 9:34 kov_serg

Re: Unix аналог цикла сообщений Windows
Здравствуйте, AlexGin, Вы писали:

AG>PostThreadMessage

AG>https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-postthreadmessagea

AG>Вот как в потоке исполнения "принять" это сообщение:

AG>
AG>    MSG msg;
AG>    while(GetMessage(&msg,0,0,0))
AG>    {
AG>        if(msg.message == WM_APP+1)
AG>        {
AG>            MessageBoxA(NULL,"Hello","From Thread",MB_OK);
AG>        }
AG>        DispatchMessage(&msg);
AG>    }
AG>

AG>https://www.codeproject.com/Articles/225755/PostThreadMessage-Demystified

AG>Мог ли бы кто-нибудь подсказать мне — что же в Unix (Linux) системах соответствует всему вышеперечисленному?


Display* display;
XEvent event[1];
int quited=0;
...
while(!quited) {
   XNextEvent(display,event);
   switch(event.type) {
        ...
   }
}
https://tronche.com/gui/x/xlib/

А если просто межпроцессорное взаимодействие то https://tldp.org/LDP/tlk/ipc/ipc.html
Но своему потоку можно кучей способов отправлять сообщения, у вас же есть мутексы семафоры и другие механизмы синхронизации.

Но если хочетмя System V message queue то вас никто не останавливает
Re: Unix аналог цикла сообщений Windows
Здравствуйте, AlexGin, Вы писали:

AG>PostThreadMessage

AG>https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-postthreadmessagea

AG>Вот как в потоке исполнения "принять" это сообщение:

AG>
AG>    MSG msg;
AG>    while(GetMessage(&msg,0,0,0))
AG>    {
AG>        if(msg.message == WM_APP+1)
AG>        {
AG>            MessageBoxA(NULL,"Hello","From Thread",MB_OK);
AG>        }
AG>        DispatchMessage(&msg);
AG>    }
AG>

AG>https://www.codeproject.com/Articles/225755/PostThreadMessage-Demystified

AG>Мог ли бы кто-нибудь подсказать мне — что же в Unix (Linux) системах соответствует всему вышеперечисленному?


Display* display;
XEvent event[1];
int quited=0;
...
while(!quited) {
   XNextEvent(display,event);
   switch(event->type) {
        ...
   }
}
https://tronche.com/gui/x/xlib/

А если просто межпроцессорное взаимодействие то https://tldp.org/LDP/tlk/ipc/ipc.html
Но своему потоку можно кучей способов отправлять сообщения, у вас же есть мутексы семафоры и другие механизмы синхронизации.

Но если хочетмя System V message queue то вас никто не останавливает