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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

マルチスレッド

マルチスレッドは、どのように機能がコンピュータによって実行したのかを、(一般的にはスレッドとして参照される)実行の複合的な共同作用するストリームへ区分することが出来ます。

Q&A

解決済

4回答

1963閲覧

C言語でthreads.hがインクルードできません

Spe3_0624

総合スコア4

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

マルチスレッド

マルチスレッドは、どのように機能がコンピュータによって実行したのかを、(一般的にはスレッドとして参照される)実行の複合的な共同作用するストリームへ区分することが出来ます。

0グッド

0クリップ

投稿2023/05/07 07:59

問題点

C言語の標準ライブラリであるはずのthreads.hがインクルードできません。解決方法をご教授願いたいです。

環境

OS : windows10
コンパイラ : gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)

他に補足で必要な情報があればコメントください。

発生している問題・エラーメッセージ

gw.c:34:10: fatal error: threads.h: No such file or directory #include <threads.h> ^~~~~~~~~~~ compilation terminated.

試したこと

MinGWのincludeフォルダの中にthread.hが存在しませんでした。なのでこのようなエラーが出ているのかと思われますが、ここからどのようにすればよいかわかりません。

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

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

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

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

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

jimbe

2023/05/07 08:06

どこにあるか探すしかないのでは。
Spe3_0624

2023/05/07 08:11

ネットなどでthreads.hのソースコードをインストールしてフォルダ内に入れるということでしょうか?
jimbe

2023/05/07 08:17 編集

いえ、インストールしている MinGW の中にあるか、あるならどこにあるか、あったらそれを include 出来るようにすれば良いでしょうし、無ければそれに代わるものを探すとか、ようは手元にある中でどうにかするしかありません。 ネットにあったとしてもそれがお手元の MinGW で使えるものとは限りません。 C の互換性は include ファイルの中身をそれぞれのコンパイル環境によって変えることで保たれるソースレベルの互換性ですので、 threads.h というファイル名が同じでも中見がご自身の環境で使えるものかは分かりません。
Spe3_0624

2023/05/07 08:26

MinGW内をすべて探しましたが、やはりthreads.hは見つかりませんでした。この場合新しく最新版のMinGWをインストールして環境を再構築した方が手っ取り早いのでしょうか。
meg_

2023/05/07 08:44

他の方の回答へのコメントとして「別の方の環境下では動作しているので、ソースコードが悪いのではなく自分の動作環境に問題があると思われます。」とありますが、その「別の方の環境」とはOSやコンパイラのVer.などほぼ同一の環境なのでしょうか?
Spe3_0624

2023/05/07 08:52

>>meg_さん 別の方のOSはMacとLinuxです。使用コンパイラはgccと同じですが、バージョンは確認していなかったので確認しようと思います。ちょっと今日中には確認できそうにないので、明日確認します。すぐ対応できず申し訳ありません。 >>hoshi-takanoriさん そうなのですか?自分はソースコードのマルチスレッド部分をいじっていないので詳しくはわからないのですが、別の環境下では動いているので未実装ということはないと思われますが... 他のところにも書きましたが、今後の論文で発表する内容なのでソースコードをそのまま載せることはできません。特定の部分だけ見せることは可能なので、その場合はお申し付けください。
int32_t

2023/05/07 08:53

> コンパイラ : gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) > MinGWのincludeフォルダの中にthread.hが存在しませんでした。 ターゲット環境は gcc/Ubuntu と MinGW/Windows のどちらなのでしょうか。
Spe3_0624

2023/05/07 09:17 編集

>>int32_tさん wslで実行しているのでgcc/Ubuntuなのでしょうか。申し訳ないです。その部分疎くて... だとしたらMinGW内のフォルダを探すのはかなり見当違いなことをしていたということでしょうか。 >>melianさん 一度MSYS2を試してみようと思います。
episteme

2023/05/07 10:04

C11対応の処理系であれば見つかるはず... gcc 7.5 ってC11対応してないんだっけ?
Spe3_0624

2023/05/07 10:24

>>hoshi-takanoriさん ubuntu20.04で実行したらできました!使っていたubuntuのバージョンが古かったのが問題だったみたいです。本当に助かりました。ありがとうございます!
guest

回答4

0

まず前提として C の言語仕様は処理系の裁量を広く認めている項目がかなり多くあります。 どのような挙動になるのか全く定めがないものや複数の選択肢の内のどれかになるもの、あるいは処理系が定めてドキュメント化することを求めている項目もあります。

threads.h も選択が認められている項目のひとつで、言語仕様に書かれてはいるものの処理系はそれを提供しないという選択をしても良いことになっています。 提供しなくても言語仕様に準拠した処理系であると名乗れるのです。 スレッドは OS によるサポートなしで実現するのが難しく、スレッドを提供していない OS もありますし、提供していても細かな部分で機能が異なるので言語仕様の側で詳細を決めて必須にすると噛み合わない部分が出てくる可能性があるからです。

あるソースコードを異なる処理系、異なるターゲットに対してコンパイルできるようにするには色々と配慮が必要です。 逆に言えば十分に配慮していないコードはそのままコンパイルできなかったり期待通りに動かなかったりするのはごく普通にあります。 C はそういうものです。

投稿2023/05/07 12:37

SaitoAtsushi

総合スコア5675

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

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

0

自己解決

実行をubuntu20.04にアップデートしたら解決しました。ubuntuのバージョンが古かったようです。皆さんありがとうございました。

投稿2023/05/11 02:55

Spe3_0624

総合スコア4

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

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

0

C言語の標準ライブラリであるはずのthreads.h

threads.hは、C11(C言語の2011年バージョン)で登場しましたが、実装が必須ではありません

環境によっては存在しないこともありえます。

投稿2023/05/07 12:36

maisumakun

総合スコア145939

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

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

0

下記が参考になりませんでしょうか。
リンク内容
<threads.h>でなく<pthread.h>にすれば良いかと。

投稿2023/05/07 08:24

tatsu99

総合スコア5493

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

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

Spe3_0624

2023/05/07 08:38

別の方の環境下では動作しているので、ソースコードが悪いのではなく自分の動作環境に問題があると思われます。確かに使うライブラリを変更するのも手ですが、できればその手段は無しで行きたいです。申し訳ありません。 ソースコードについては、論文発表に使うためまだ載せることができません。ご了承ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問