Qt. Переход с Windows на Linux. (Несколько вопросов)

Модератор: Модераторы разделов

AndrewVladoff
Сообщения: 4

Qt. Переход с Windows на Linux.

Сообщение AndrewVladoff »

Добрый день. Пишу на Qt по видой. Сейчас необходимо написать несколько программ на Qt для Linux.
В связи с этим несколько вопросов:
1. какой аналог CRITICAL_SECTION для Linux?
2. Определение в функциях __fastcall в Linux используется?
3. Какой аналог эвентов в Linux:
код для Windows

Код: Выделить всё

HANDLE hEvent;
hEvent = CreateEvent(NULL, 0, 0, NULL);

SetEvent(hEvent);
CloseHandle(hEvent);

.......

if (WaitForSingleObject(hEvent, 1000) == WAIT_OBJECT_0)
  {
        ...

  }

а как это будет выглядеть в Лнуксе?
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: Qt. Переход с Windows на Linux.

Сообщение Crazy »

Может лучше воспользоваться средствами Qt? Там есть всякие QMutex, QWaitContion, QSemaphore, QEvent, QThread.
Зачем CRITICAL_SECTION, семафоры один из универсальных методов синхронизации.
__fastcall не знаю зачем он нужен, когда компилятор сам умеет оптимизировать.
Ну если хочется платформозависимые события, то man event

Desipere in loco
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Qt. Переход с Windows на Linux.

Сообщение RasenHerz »

1. Нет необходимости, т.к. все виджеты по-умолчанию отрисовываются и управляются в главном потоке, а доступ из других потоков к ним запрещен. Если нужен просто примитив синхронизации юзайте QMutex.
2. void f(int) __attribute__((fastcall));
3. Ну в Qt предпочтительна модель сигнал/слот, хотя можно перехватывать отдельные события и/или все события разом, но имхо, события надо использовать только в крайнем случае.
Спасибо сказали: