We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rtmbuildで自動生成されるServiceROSBridgeはROSのserviceをシングルスレッドで処理するので、特定の条件を満たすまでsleepする系のサービスコールを呼んだときに、デッドロックに陥る場合がある、という問題があります。
例えば、AutoBalancerServiceROSBridgeに次のような順でサービスコールを送ると、AutoBalancerServiceROSBridgeがデッドロックに陥り、困りました。
$ rosservice call /AutoBalancerServiceROSBridge/goVelocity "vx: 0.0 vy: 0.0 vth: 0.0" $ rosservice call /AutoBalancerServiceROSBridge/waitFootSteps "{}" $ # 以降別ターミナルからAutoBalancerServiceROSBridge にサービスコールを送れなくなる. 別ターミナルから/AutoBalancerServiceROSBridge/goStopなどを呼んでも止まらない。
AutoBalancer本体のRTCは、OpenRTMの仕様でサービスコールを別スレッドで処理するのでデッドロックになりません。
一つのROSのクライアントノードからサービスコールをしている場合には、問題が起こるような順番で呼ばなければいいのでこの問題は起こりにくいのですが、複数のROSのクライアントノードから非同期にサービスコールをしている場合に、頻発します。
ROSのserviceをマルチスレッドで処理できるようにしたいです。
The text was updated successfully, but these errors were encountered:
#839 と関連
Sorry, something went wrong.
No branches or pull requests
rtmbuildで自動生成されるServiceROSBridgeはROSのserviceをシングルスレッドで処理するので、特定の条件を満たすまでsleepする系のサービスコールを呼んだときに、デッドロックに陥る場合がある、という問題があります。
例えば、AutoBalancerServiceROSBridgeに次のような順でサービスコールを送ると、AutoBalancerServiceROSBridgeがデッドロックに陥り、困りました。
AutoBalancer本体のRTCは、OpenRTMの仕様でサービスコールを別スレッドで処理するのでデッドロックになりません。
一つのROSのクライアントノードからサービスコールをしている場合には、問題が起こるような順番で呼ばなければいいのでこの問題は起こりにくいのですが、複数のROSのクライアントノードから非同期にサービスコールをしている場合に、頻発します。
ROSのserviceをマルチスレッドで処理できるようにしたいです。
The text was updated successfully, but these errors were encountered: