16

私は並行性からもっと学びたいと思っています、そして私は多くの良いレビューを持っているこの本を見つけました。しかし、序文を見てみると、C++11にのみ含まれているSTD関数に非常に焦点が当てられているのではないかと思います。

C ++ 11はまだあまり使われておらず、職場でもまったく使われていないので、この本を読むことが別の本を読むべきときに時間の無駄になるかどうかを知る必要があります。

私はWindows開発に焦点を合わせていますが、UNIXとWindowsの両方で使用される標準ライブラリの使用が好きでした。この本について何かアドバイスや宣言はありますか?

4

6 に答える 6

14

いいえ、本はC++11構文を多用しています。

また、本で説明されていることは、C ++ 11ライブラリの機能だけではありません。たとえば、C++11メモリモデルはC++11のまったく新しいものです(c ++ 98はMTの存在を認識しませんでした)。

それでも私見では、nuwen.netからg ++ 4.9 + boostをインストールするのは非常に簡単であるか、VS2013コミュニティを取得する必要があります。

C ++ 11が標準であり、すぐに職場で使用できるようになると思います(Andrei Alexandrescuを引用しない場合:「ヘッドハンターに電話してください!」)。ところでstd::thread、とboost::threadは非常に似ていますが、顕著な違いがあります。

于 2012-08-30T08:05:32.973 に答える
6

確かに、C++11に重点を置いています。サブタイトルが示すように、これは「実用的なマルチスレッド」です。

C ++ 11を使用しない場合に興味がある唯一の方法は、C++11スレッドのベースであるブーストスレッドを使用することを計画している場合です。ただし、C ++ 11でいくつかの変更が加えられたため、これらはまったく同じではないことを知っておく必要があります。(たとえば、C ++ 11では、スレッドが終了するのを待つか、スレッドを単独で実行するかを決定する必要があります。ブーストでは、デフォルトで単独で実行されます。C++ 11で選択しない場合は、プログラムは終了します)。

次に、その分野に関心のあるC ++開発者としての一般的な知識については、読むことをお勧めします。C++11の本は今のところ軍団ではありません。

于 2012-08-30T08:05:24.830 に答える
4

次世代のVisualC++は、2週間でリリースされる予定ですが、std::threadライブラリが含まれています。私が間違っていなければ、G++にはすでにライブラリが含まれています。私はこれを数えません。そして、これが重要です。C++11は非常に重要です。あなたの職場が移住を計画していないのなら、私は別の職場を見つけるでしょう。

于 2012-08-30T08:07:07.690 に答える
4

以来

  • 並行性について読む本を探しています
  • WindowsとUNIXの両方で動作するライブラリを使用したい
  • C ++を使用したいが、C++11は使用したくない

おそらくBoost.Threadを使用する必要があります。

この本を読む理由はいくつかあります。

  • Boostスレッドに関する本を知りません
  • この本の著者は、Boost.Threadの主要な開発者および保守者です。
  • C ++ 11スレッドはBoostスレッドによく似ています(著者は次のように書いています。「本の例のほとんどは、std::をboost::に適切に置き換え、適切なものを使用することで、Boostスレッドライブラリで動作するように変更できます。 #includeディレクティブ。")
于 2012-09-23T06:35:43.970 に答える
2

マルチスレッドのことを知らなくても、とても面白い本だと思います。1つの構造で2つのミューテックスを作成するのと同じように、2つのコアから2つのプロセッサに切り替えるときに問題が発生します。デザインパターンもたくさんあります。この本から、例としてABA問題などを学びます。また、ブーストスレッド(c ++ 11xを必要としない)はc++11スレッドと非常によく似ています。あなたはsmart_ptrs、多分シンクパターン、RAIIなどに固執するでしょう。それは素晴らしい本です。

現在でも、すべての機能が例のG++に実装されているわけではないことに注意してください。http://gcc.gnu.org/projects/cxx0x.html

正直に言って、あなたは確かに新しいc ++を学び始めます、それはあなたがそれに触れなければならない時間の問題です。

于 2012-08-30T08:17:16.567 に答える
0

私はこの本を読んでいませんが、並行性について明確でない場合、最初に行うことは、1つのマルチスレッドシステムについて読み、使用し、理解することです。

次に、別のシステムについても同じことを行い、すでに知っているシステムとの違いに注意してください。違いを見つけたら、さまざまなシステムが並行性のその側面をどのように処理するかを確認するために読み始めてください。

現在マルチスレッドプログラムで作業している場合、最初に調査するシステムは、主に作業しているシステムである必要があります。そのシステムの同時実行モデルを理解するまでは、おそらく物事を壊したり、プログラミングを行ったりしているからです。既存のコードのコピーアンドペースト。つまり、Windows、pthread、Boost、TBB、またはすでに存在する他の何かである可能性があります。ただし、C++11は2番目のシステムの有力な候補になる可能性があります。

そうでなければ、あなたが最初に勉強するものにそれほど大きな違いはないと思います。std::threadOK C ++ 11には、PDF以外にはまだ存在しないという小さな欠点があります。まだ急速に開発中のコンパイラバージョンをインストールする必要があり、当面は代わりにBoostスレッドを使用する必要があります。この本のコード例のいくつかはコンパイルされない可能性があり、不足している機能を回避する必要があります。ですから、職場で本の実験を本番コードで試してはいけません(つまり、とにかくそうしないでしょう?)。

正直なところ、C ++を気にしないでください。Javaの並行性モデルを学ぶことは、並行性を理解するための道のりの合理的な出発点になる可能性があります。またはGo:いくつかの非常に優れた抽象化があり、その要点を理解するのに半日かかります。醜い複雑さが他の方法で強制されないことを前提として、並行プログラムをどのように機能させるべきかを示します。もちろん、Java、Go、またはC ++ 11のすべての知識を、プロのC ++作業ですぐに使用することはありませんが、それでも持つ価値があるかもしれません。

于 2012-08-30T08:48:52.450 に答える