問題タブ [stdthread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
21737 参照

c++ - C ++ 11 std :: threadエラーが発生しました:std :: thread::threadを呼び出すための一致する関数がありません

このコードでc++11スレッドをテストしていますが、スレッドを作成するときに、「std :: thread :: thread()」の呼び出しに一致する関数がないというエラーが発生します。

std :: thread ctrに与えている関数に何か問題があったかのようですが、それがどのように間違っているのかわかりません。それは不完全ですが、私には正しく見えます:

ヘッダ:

ソース:

0 投票する
2 に答える
239 参照

c++ - 2 つの同一の (ネットワーク) 通話。最速を待ち、最も遅く破棄する方法は?

c++11 では、同じタイプの 2 つの高価な (ネットワーク) 呼び出しを実行し、遅い方の結果を待って破棄するのではなく、速い方の結果のみを待つプログラムを実装するにはどうすればよいでしょうか。std::thread は中断できず、便利な std::future を返しません。また、未来を返す std::async は、中断することも切り離すこともできません。

2 つの主な問題は次のとおりです。 - より迅速な結果が到着したときの通知。- 遅いスレッドの終了 (およびクリーンアップ)。

0 投票する
2 に答える
1133 参照

c++ - asio .async_* は、メイン スレッドが io_service.run を呼び出さない限り実行されません

私は最近、boost asio といくつかの新しい c++11 コンストラクトをいじっています。これは、予期しない動作を引き起こすコードのサンプル セクションです (少なくとも私にとっては)。

Server::startAccept を呼び出す前に、io_service::work のインスタンスと、io_service_.run() を呼び出す std::thread のプールを作成しました。startAccept を呼び出した後、メイン スレッドはコマンド ライン入力を待つだけです。

スレッド プール内のスレッドの 1 つが、接続の開始時に Server::accept_handler を実行することを期待しています。これは起こりません。代わりに、メイン スレッドから io_service_.run() を呼び出す必要があります。

しばらく遊んでみたところ、これを行うことで目的の動作を実現できることがわかりました。

.async_* 操作と io_service.post の違いは何ですか?

編集: BOOST_ASIO_ENABLE_HANDLER_TRACKING の定義

プログラムをコンパイルして実行し、最初に含めたコード ブロックを使用してサーバーに接続すると、次のような出力が表示されます。

含めた 2 番目のコード ブロックを実行してサーバーに接続すると、次の出力が得られます。

編集 2: スレッド作成の洞察

0 投票する
4 に答える
3508 参照

c++ - std::thread, class constructor and destructor

When testing threads in C++11 I have created the following example:

Which prints the following:

enter image description here

Why is the destructor called 6 times for the thread? And why does the thread report different memory locations?

EDIT When adding move and copy constructor output:

enter image description here

0 投票する
4 に答える
38078 参照

c++ - C ++ 11:std :: thread pooled?

C ++ 03では、常に2つのスレッドを実行し続ける自己構築スレッドプールでpthreadを使用しました(pthread_create遅いため)。このようにして、パフォーマンスの問題を気にせずに小さなタスクのスレッドを起動できました。

現在、C++11にはがありstd::threadます。標準は特定の実装について何も述べていないので、私の質問は標準ライブラリの実装についてです。std::thread彼らは一般的に、 sの構築が安価である(そして例えばpthread_createposixを必要としない)プールされたアプローチを選択していますか、それともstd::thread単なるラッパーになりますか?

言い換えれば、スレッドプールはC ++ 11でも推奨されていますか、それとも必要std::threadなときにいつでもスレッドプールを作成して、パフォーマンスを標準ライブラリに任せる必要がありますか?

0 投票する
1 に答える
1547 参照

c++ - このプログラムが'std:: system_error'をスローするのはなぜですか?

重複の可能性:
この単純なstd :: threadの例が機能しないのはなぜですか?

コード:

問題:

「中止」とは、私のロケールでは「中止」を意味します。

0 投票する
1 に答える
4547 参照

c++ - native_handle() + pthread_cancel() を使用して std::thread をキャンセルする

pthread の以前のスレッド ラッパーを std::thread に変換しています。ただし、c++11 にはスレッドをキャンセルする方法がありません。ただし、スレッドは外部ライブラリ内で非常に長いタスクを実行している可能性があるため、スレッドをキャンセルする必要があります。

プラットフォームで pthread_id を提供する native_handle の使用を検討していました。Linux (Ubuntu 12.10) で gcc 4.7 を使用しています。アイデアは次のようになります。

スレッドは、pthreads によってスローされた例外によってキャンセルされます。

私の質問は:

このアプローチに問題はありますか (移植性がないこと以外に)?

0 投票する
4 に答える
9474 参照

c++ - std :: lock(c ++ 11)を使用した大量のCPU負荷

スレッド/ミューテックスマネージャーを実装するための最近の取り組みは、75%のCPU負荷(4コア)になりましたが、実行中の4つのスレッドはすべてスリープ状態か、ミューテックスビーのロックが解除されるのを待っていました。

特定のクラスは、ここに完全に掲載するには大きすぎますが、原因を2つのミューテックスのデッドロックセーフな取得に絞り込むことができます。

クラスの別の部分では、std::condition_variablewithwait()notify_one()onmutex1を使用して、一部のコードを同時に選択的に実行します。

への簡単な変更

CPU使用率を通常の1〜2%に下げました。

私は信じられません、std::lock()機能はその非効率的です。これはg++4.6.3のバグでしょうか?

編集:(例)

0 投票する
1 に答える
11927 参照

c++ - std::スレッドエラー

クラス内からスレッドを生成しようとしていますが、スレッドはクラス内の特定のメソッドを実行します。コードは次のようになります。

コンパイル時のこのコードは、次のエラーをスローします

ここでの実際のバグが何であるかはわかりません。誰かがこれで私を助けることができますか?

ありがとう。

0 投票する
2 に答える
58204 参照

c++ - スレッド オブジェクトを使用して std::thread を強制終了したいですか?

重複の可能性:
C++0x スレッドの中断

スレッド オブジェクトを使用して c++ std::thread を強制終了/停止しようとしています。

どうすればこれを行うことができますか?