Threadプログラミング/C++11/VC2013RC
標準C++形式のプログラムの新規作成は、このサイトの後半を参照
Visual C++2013は、C++11に対応しているということなので、Visual Studio 2013 RC でスレッドを用いる以下のプログラムを試してみた。
============================================================
#include <iostream>
#include <vector>
#include <thread>
#include <functional>
#include <atomic>
void funcA(){
for (int i = 0; i < 1000; i++)
std::cout << "a";
}
void funcB(){
for (int i = 0; i < 1000; i++)
std::cout << "b";
}
int main(){
std::vector<std::thread> threads;
threads.push_back(std::thread{ funcA });
threads.push_back(std::thread{ funcB });
std::vector<std::thread>::iterator t;
for (t = threads.begin(); t != threads.end(); t++)
t->join();
char c;
std::cin >> c;
return 0;
}
============================================================
上のプログラムを実行すると図1のように文字aの出力と文字bの出力が混合しているので、2本のスレッドが同時に実行されていることがわかる。
図1
上のプログラムは、図1の状態において、
std::cin >> c;
のところで文字の入力待ちになっているので、何か文字キー(例えば、キーA)を押してEnterキーを押すと終了する。
プログラムの新規作成を、ここでは以下の手順で行う(Visual Studio Express 2013 for Windows Desktopでは、後半で説明するより簡単な方法も可能)。
Visual Studio 2013 RCを起動して、メニュ「ファイル|新しいプロジェクト」を選ぶ(図2)。
図2
新しいプロジェクトダイアログウィンドウが表示されるので、「テンプレート|Visual C++|Win32」をクリックして選び、右側に表示されているペインから「Win32 プロジェクト」をクリックして選ぶ(図3)。
図3
「場所」(プロジェクトが格納されるソリューションのフォルダ)と「名前」(プロジェクトの名前)を適宜に設定して「OK」ボタンをクリックする。図4のダイアログウィンドウが表示されるので、「次へ」ボタンをクリックする。
図4
図5のダイアログウインドウが表示されるので、「コンソールアプリケーション」(今回は、コンソールを用いるため)と「空のプロジェクト」(プロジェクトの外で、ソースコードファイル*.cppを用意する手順を用いるため)を選んでチェックを入れる。
図5
「完了」ボタンをクリックすると、図6のような画面になる。
図6
メニュ「ファイル|新しいファイル」を選ぶ(図7)。
図7
新しいファイルダイアログウィンドウが表示されるので、左のペインから「Visual C++」を選び、右のペインに表示される項目から「C++ファイル」を選ぶ(図8)
図8
「開く」ボタンをクリックすると、図9のように新しいC++ファイル(図9では、Source1.cppという名前が付いている)が作成される。
図9
このファイルをプロジェクト内に名前を付けて保存するために、メニュ「ファイル|名前を付けてSource1.cppを保存」を選ぶ。
図10
名前を付けてファイルを保存ダイアログウィンドウが表示されるので、プロジェクト名のフォルダを選ぶ(図11)。
図11
「ファイル名」は適宜設定すればよいが、図11では変更せずにそのまま用いている。
「上書き保存」ボタンをクリックして保存する。この保存したファイルをプロジェクトに取り込むために、メニュ「プロジェクト|既存項目の追加」を選ぶ(図12)。ビルドの対象となるファイルはプロジェクトに取り込んでおく必要がある。
図12
既存項目の追加ダイアログウィンドウが表示されるので、追加するファイル(図11の場合は、Source1.cpp)をクリックして選んで「追加」ボタンをクリックする。
図13
ソリューションエクスプローラに追加したファイル名が表示される。
図14
エディタに表示されているファイル内に上のプログラムを書き込む(図15)。
図15
F5キーを押すと、図16のダイアログウィンドウが表示される。
図16
「はい」ボタンをクリックすると、ファイルの保存後、ビルドが始まり、ビルドがエラーなく終了するとプログラムが実行されて、図17のコンソールウィンドウが表示される。
図17
上の説明は、Visual Studio 2013 RC (Release Candidate)版の場合の方法であるが、その後リリースされたVisual Studio Express 2013 for Windows Desktopでは以下の方法でもプログラムを新規作成することができる。
Visual Studio Express 2013 for Windows Desktopを起動する(図18)。
図18
メニュ「ファイル|新しいプロジェクト」(図19)を選択。
図19
表示された「新しいプロジェクト」ダイアログウィンドウ(図20)において、テンプレート「Visual C++|全般」を選び、表示された右側のペインから「空のプロジェクト」を選ぶ。
図20
プロジェクトの「名前」、プロジェクトの格納されるソリューションが置かれる「場所」(「参照」ボタンのクリックで選択できる)の設定後、「OK」ボタンをクリックする。図21のように、空のプロジェクトが作成された状態になる。
図21
図21の場合のフォルダの関係は、「場所」で指定したフォルダの下にソリューション名のフォルダが置かれ、その下にプロジェクト名のフォルダが用意される。以下で用意するプログラムソースコードファイルなどはプロジェクト名のフォルダ内に格納される。
空のプロジェクトにソースコードファイルを作成追加するために、メニュ「プロジェクト|新しい項目の追加」を選ぶ(図22)。
図22
「新しい項目の追加」ダイアログウィンドウが表示される(図23)。
図23
「Visual C++|コード」を選び、右側のペインから「C++ファイル」を選ぶ。「名前」を適当に設定して「追加」ボタンをクリックする。
図24
図24に示されるように、図23で設定したファイル名でエディタ画面が用意される。
図25
図25のようにコードを書き込んで、F5キーを押すと、ビルド・実行され、図26のような画面が表示される。
図26
図26のコンソールウィンドは、適当な文字キー(例えば、’A’キー)を押してからEnterキーを押すと、入力文
cin >>
c;
の実行終了となり、次の
return
0;
が実行されてプログラムの実行終了となり、コンソールウィンドウは消える。