2017-04-11 12 views
0

私は、boost :: asioライブラリのチャットの例に基づいて組み込みアプリケーションを構築しています。サーバはクライアントからメッセージを受信し、純仮想機能を使用するインタフェース上でそれらを送信します。応答はこのインタフェースから回復され、クライアントに返されます。別の場所でクラッシュするので、私はそれをマルチスレッドに正しく取得できません。 http://www.boost.org/doc/libs/1_63_0/doc/html/boost_asio/examples.htmlマルチスレッドでBoost asioプログラムがクラッシュする

私は仮想関数を使用したりすることはできません、各クラス内のすべての共有オブジェクトは、ミューテックスで保護され、静的に宣言する必要があるかどうかを知りたいのですが

。このサーバーを変更して、ネットワーク上のmsgを受信するための1つのスレッドを実行する方法、インターフェース上でメッセージを送信する方法、および他のすべてが非同期であるためにクライアントに返信する応答を回復する方法。コードの量が多いので、私はどのようにこのすべてを投稿できるのか分かりません。 すべてのアイデアは評価されています。ありがとう

+1

実行しているコードを正確に共有する – Arunmu

答えて

0

さまざまな戦略でいくつかの試行をした後、私はそれを働かせることができました。私は今、2つのioサービスインスタンスを持っています.1つはネットワークIOを管理し、もう1つは他のデバイスインタフェースを管理するインスタンスです。ヌルになっていた共有ポインタに問題がありました。だから、 "shared_from_this"の代わりに "this"を使う必要がありました。私のコードはクラスにあります。 この例は私に助けてくれました:Long-running/blocking operations in boost asio handlers

関連する問題