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

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

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

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

C++

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

Q&A

解決済

1回答

2690閲覧

デッドロックが発生するプログラム

miyakkatto0

総合スコア4

C

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

C++

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

0グッド

0クリップ

投稿2021/07/19 13:50

編集2021/07/19 14:59

デッドロックが発生するプログラムを作成したいと思います。
下記のプログラムがテンプレートでそこから自分で試してみました。
このプログラムがデッドロックを発生しているか教えてください。
('#'を先頭に記載する方法も教えて下さい。)

2 個のスレッド t1 と t2 が 2 個のミューテックス m1 と m2 を使用しているとします。

#試したこと
.#include <pthread.h>
.#include <stdio.h>

pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER;

void *f1(void *arg) {
while (1) {
pthread_mutex_lock(&m1);
printf("f1: running\n");
pthread_mutex_lock(&m2);
pthread_mutex_unlock(&m2);
pthread_mutex_unlock(&m1);
}

return NULL;

}

void *f2(void *arg) {
while (1) {
pthread_mutex_lock(&m2);
printf("f2: running\n");
pthread_mutex_lock(&m1);
pthread_mutex_unlock(&m1);
pthread_mutex_unlock(&m2);
}

return NULL;

}

int main(int argc, char *argv[]) {
pthread_t t1, t2;

if (pthread_create(&t1, NULL, f1, NULL)) { perror("pthread_create"); return 0; } if (pthread_create(&t2, NULL, f2, NULL)) { perror("pthread_create"); return 0; } pthread_join(t1, NULL); pthread_join(t2, NULL); return 0;

}

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

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

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

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

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

episteme

2021/07/19 21:32

> '#'を先頭に記載する方法も教えて下さい。 コードを ```C と ``` で囲みます。こんな↓カンジで。 ```C #include <stdio.h> int main() { printf("Hello, world\n"); return 0; } ```
guest

回答1

0

ベストアンサー

このプログラムがデッドロックを発生しているか教えてください。

YES. デッドロックします。

投稿2021/07/19 19:39

episteme

総合スコア16612

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

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

miyakkatto0

2021/07/20 06:35

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問