Я работаю над проектом C / C ++, который включает в себя пользовательский интерфейс и фоновый сервис, который выполняет тяжелую обработку, извлекая данные по сети. Чтобы мой пользовательский интерфейс не переставал отвечать, я хотел бы создать отдельный поток, а затем вызвать фоновую службу в этом потоке, в то время как другой поток отобразит индикацию занятости в пользовательском интерфейсе. После того, как фоновая служба завершит свою работу, я бы хотел переключить контекст потока с фонового потока на поток пользовательского интерфейса, чтобы индикация занятости была удалена и могли отображаться дальнейшие потоки экрана.
Я считаю, что это обычный способ работы большинства интерфейсов. Я хотел бы знать, каковы эффективные и лучшие способы достижения этого. На данный момент у меня нет кода, реализованного для вышеизложенного, и я просто прошу идеи и лучшие способы сделать это.
Платформа - Linux.
Платформа пользовательского интерфейса, которую я использую, представляет собой пользовательскую платформу пользовательского интерфейса, которая предоставляет SDK для разработки пользовательского интерфейса, но в отличие от большинства платформ пользовательского интерфейса она ничего не даст для упомянутого мной сценария. Это почти устаревший фреймворк, но его нужно использовать для этого проекта, что является болезненным, поэтому единственный вариант - я могу использовать Pthread или System v с некоторыми обертками для реальных вызовов, что поможет мне сохранить переносимость реализации на разных платформах.
Я не могу использовать Boost Threads из-за определенных ограничений встроенной среды.
Любые предложения и объяснения о том, как происходит переключение контекста, будут действительно полезны.