История изменений
Исправление 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-овских клиента одновременно вызывают методы на одном объекте и эти вызовы не будут сериализоваться автоматически.