LINUX.ORG.RU

История изменений

Исправление Begemoth, (текущая версия) :

Как обычно для C++, но не так как было бы приятнее для Qt, наверное.

Кстати, из потоков Ice можно формировать сигналы Qt, а слоты к ним цеплять через Qt::QueuedConnection, может где пригодится.

при обновлении данных из основного потока - я использую QMutex + QMutexLocker. Надеюсь я всё правильно делаю... :)

Ну да. Тут ещё надо помнить, что методы одного объекта могут вызываться в разных потоках. Т.е. два Ice-овских клиента одновременно вызывают методы на одном объекте и эти вызовы не будут сериализоваться автоматически.

Есть ещё Asynchronous Method Dispatch, оно полезно для передачи работы в свои worker threads. В принципе, если методы выполняются быстро (или используют сигналы-слоты т.е. не блокируют Qt-шный event-loop), то работу можно выгрузить в основной Qt-шный поток и не морочаться с синхронизацией.

Исправление Begemoth, :

Как обычно для C++, но не так как было бы приятнее для Qt, наверное.

Кстати, из потоков Ice можно формировать сигналы Qt, а слоты к ним цеплять через Qt::QueuedConnection, может где пригодится.

при обновлении данных из основного потока - я использую QMutex + QMutexLocker. Надеюсь я всё правильно делаю... :)

Ну да. Тут ещё надо помнить, что методы одного объекта могут вызываться в разных потоках. Т.е. два Ice-овских клиента одновременно вызывают методы на одном объекте и эти вызовы не будут сериализоваться автоматически.

Есть ещё Asynchronous Method Dispatch, оно полезно для передачи работы в свои worker threads. В принципе, если методы выполняются быстро, то работу можно выгрузить в основной Qt-шный поток и не морочаться с синхронизацией.

Исходная версия Begemoth, :

Как обычно для C++, но не так как было бы приятнее для Qt, наверное.

Кстати, из потоков Ice можно формировать сигналы Qt, а слоты к ним цеплять через Qt::QueuedConnection, может где пригодится.

при обновлении данных из основного потока - я использую QMutex + QMutexLocker. Надеюсь я всё правильно делаю... :)

Ну да. Тут ещё надо помнить, что методы одного объекта могут вызываться в разных потоках. Т.е. два Ice-овских клиента одновременно вызывают методы на одном объекте и эти вызовы не будут сериализоваться автоматически.