開発者ドキュメントユーザーガイドLinux SDKイベントリスナー利用時の注意点

イベントリスナー利用時の注意点

このセクションでは、SkyWay Linux®︎ SDK (以下、Linux SDK ) のイベントリスナーにおける操作の注意点について説明します。

イベントリスナー内での SDK の操作について

Linux SDK が提供する各種リソースのイベントリスナー内では、Linux SDK の状態を変更する操作や、処理を長時間ブロックする操作を行わないでください。

Linux SDK の状態を変更する操作とは、Publish()Subscribe()Dispose()Context::Setup() などの処理を指します。

イベントリスナー内でこれらの操作を行った場合、デッドロックなどの予期しない挙動が発生する可能性があります。また、時間のかかる処理や同期的な待機処理を行うと、後続のイベント処理に影響を与える可能性があります。

なお、RoomPublication::Subscriptions() のように SDK の状態を参照するだけで、リソースの作成・変更・破棄を伴わない処理は問題ありません。

SDK の操作が必要な場合の実行方法

イベントリスナー内で SDK の操作や時間のかかる処理が必要な場合は、別スレッドで実行してください。

以下は、OnStreamPublished() イベントリスナー内で Subscribe を行う例です。

void ExampleRoom::OnStreamPublished( std::shared_ptr<skyway::room::interface::RoomPublication> publication) { // イベントリスナーからSkyWayの操作を行う場合は別スレッドで実行する必要があります。 auto subscribe_thread = std::make_unique<std::thread>( [this, threads_publication = std::move(publication)]() mutable { this->Subscribe(std::move(threads_publication)); }); threads_.emplace_back(std::move(subscribe_thread)); }

スレッドの管理方法については クイックスタート もご参照ください。

商標

Linux®︎は、米国およびその他の国における Linus Torvalds の登録商標です。