質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

1回答

9462閲覧

c++における<pthread.h>と<thread>に関する質問です。

Daichi

総合スコア47

C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2016/01/14 11:05

編集2016/01/14 12:40

今マルチスレッドプログラムを作成して、処理を高速化しようとしています。

最初に<thread>と<pthread.h>を使ってプログラムを書こうとしているのですが、
プログラムの書き方としては以下であってますでしょうか??
以下のプログラムは今作成中のプログラムの中に書いてあるもので、
作成中のプログラムが果てしなく長いので
その中に書いてある部分で関係ありそうなところを引き抜いて書いてあります。

<thread>バージョン

c++

1#include<thread> 2 3using namespace std; 4 5int main() 6{ 7for(int i=0;i<10;i++) 8{ 9 void a(); 10 void b(); 11 void c(); 12 13 thread t1(a); 14 thread t2(b); 15 thread t3(c); 16 17 t1.join(); 18 t2.join(); 19 t3.join(); 20 21 t1.~thread(); 22 t2.~thread(); 23 t3.~thread(); 24} 25 26return 0; 27}

<pthread.h>バージョン

c++

1#include <pthread.h> 2 3using namespace std; 4 5int main() 6{ 7for(int i=0;i<10;i++) 8{ 9 10 void* a(void* z); 11 void* b(void* z); 12 void* c(void* z); 13 14 pthread_t t1,t2,t3; 15 16 pthread_create(&t1, NULL, a, (void *)NULL); 17 pthread_create(&t2, NULL, b, (void *)NULL); 18 pthread_create(&t3, NULL, c, (void *)NULL); 19 20 pthread_join(t1, NULL); 21 pthread_join(t2, NULL); 22 pthread_join(t3, NULL); 23 24} 25return 0; 26}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

t1, t2, t3は普通にローカル変数として確保しているので、スコープを抜ける時にデストラクタは自動的に呼ばれます。従って、下記は不要です。

t1.~thread();
t2.~thread();
t3.~thread();

pthreadは使ったことないのですが、リファレンス解説サイトを見る限り間違ってはいないように見えます。(returnの位置はたぶん間違いと思いますが。)

ところで、標準ライブラリでないC言語用のライブラリを使うのは何故でしょうか?
C++11を使える環境なら使わない方が好ましいと思います。

投稿2016/01/14 11:55

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daichi

2016/01/14 12:38

回答ありがとうございます! returnは書くところを間違いました(笑) 失礼ましたm(__)m cppでプログラムを書いていて、処理があまりにも時間かかるので マルチスレッドだったら速いというのを聞いたので そこに組み込もうと思って使いました! あまりプログラムに詳しくないので、お尋ねしたいのですが C++11を使えるのであれば、なぜ使わないほうが好ましいのですか??
Chironian

2016/01/14 12:49

C++11は標準で<thread>を持ってます。<pthread.h>は標準ではないですし、C言語用です。 ①非標準な機能は標準機能に比べると移植性に問題が出やすいです。 ②C++の機能を使った方が生産性を上げることができます。(学習コストはかかりますが。) 既にC言語用ライブラリに慣れている等の理由があれば別ですが、そうでないならC++仕様のライブラリを学習した方が生産性を改善できると思います。
Daichi

2016/01/14 13:06

なるほど。 わかりました! 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問