facebook twitter hatena line google mixi email
★お気に入り追加


■ このスレッドは過去ログ倉庫に格納されています

  • 1
  •  
  • 2014/02/16(日) 01:49:14.42
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 124
http://toro.2ch.net/test/read.cgi/tech/1389096769/
★過去スレ
ttp://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 166代目
http://toro.2ch.net/test/read.cgi/tech/1381909900/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
ttp://codepad.org/
ttp://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
【重要】
当たり前の事ですが、2chではコピペ荒らしは禁止されています

ここまで見た
  • 775
  •  
  • 2014/03/26(水) 13:00:51.54
括弧の内側にスペース入れるなとだけ言っておく

ここまで見た
  • 776
  •  
  • 2014/03/26(水) 13:08:45.68
if ( a >= 0 ){

}else if ( b == 0 ){

}else if ( ( c > 4 )&&( d < 5 ) ){

}else{

}

int func( int a , char *b , long c )
{

}

for( x=0;x<100;x++ ){

}

switch( xxx ){

}

ここまで見た
  • 777
  •  
  • 2014/03/26(水) 19:25:14.63
>>771>>773の人がセンス的に俺のに一番近いが、
if (a > 0) {
[TAB]...;
} else if (a == 0) {
[TAB]...;
} else {
[TAB]...;
}

type function(type arg1, type arg2, ...) {
[TAB]...;
}

ここまで見た
  • 778
  •  
  • 2014/03/26(水) 19:26:35.60
>>777訂正
>>771>>774の人だったね。

ここまで見た
  • 779
  •  
  • 2014/03/26(水) 19:32:09.75
>>776の人のは、カッコが他とくっつき過ぎてちょっと俺的には見にくいわ

for (int i = 0; i < 100; i++) {
[TAB]...;
}

switch (i) {
case 0:
[TAB]...;
[TAB]break;
case 1:
[TAB]...;
[TAB]break;
}

ここまで見た
  • 780
  •  
  • 2014/03/26(水) 19:36:47.51
>>777
>>779
俺も全く同じくだわ。

ここまで見た
  • 781
  •  
  • 2014/03/26(水) 20:06:06.20
>>777
>771と>774は別人よ。
そんな私(>771)はelse周りは>777と一緒。

ここまで見た
  • 782
  •  
  • 2014/03/26(水) 20:46:03.99
if (a > 0) {
[TAB]...;
} else if (a == 0) {
[TAB]...;
} else {
[TAB]...;
}

type function(type arg1, type arg2, ...)
{
[TAB]...;
}

struct str {
[TAB]...;
};

for (int i =0; i < 10; i++) {
}
a = function(100);

ここまで見た
  • 783
  •  
  • 2014/03/26(水) 20:50:44.47
自由にかけるのがCの魅力だ

ここまで見た
  • 784
  • KAC
  • 2014/03/26(水) 20:57:03.42
読み手にどう読んでほしいかによって書き方変える。
変化をつけるってのは、注意を引くための手法の一つ。

ここまで見た
  • 785
  •  
  • 2014/03/26(水) 20:59:31.27
オイラは { 〜 } の中身の具合によって違うな。

ここまで見た
  • 786
  •  
  • 2014/03/26(水) 21:03:58.84
こういうのってIDEとかで変換できないの?
できたら個人が好きなように書いて、読み手によって表示変えたりとか

ここまで見た
  • 787
  •  
  • 2014/03/26(水) 21:58:03.18
VSで自分の好みにフォーマットできるよ

ここまで見た
  • 788
  • KAC
  • 2014/03/26(水) 23:49:42.71
空白などの書き方や癖なんかも
他人のソースを読む上での重要な情報なんだよ。
それを機械で全部取り去るなんて愚の骨頂。

ここまで見た
  • 789
  •  
  • 2014/03/26(水) 23:58:30.98
indentコマンドでどうにかなるのでは?

ここまで見た
  • 790
  •  
  • 2014/03/27(木) 01:15:05.02
俺のeclipseのformatter
http://codepad.org/7h0NLM0k

ここまで見た
  • 791
  •  
  • 2014/03/27(木) 01:57:28.08
>>790
default: {
bar += bar;
break;
}
これって?

ここまで見た
  • 792
  •  
  • 2014/03/27(木) 02:26:30.90
>>784
>>788
小説じゃないんだから読み手に丸投げってのはありえないよ
伝えたい何かがあるならそれをそのままコメントに書けばいい

>>786
astyleが定番

ここまで見た
  • 793
  •  
  • 2014/03/28(金) 07:20:50.90
>>782 と全く同じだった

ここまで見た
  • 794
  • KAC
  • 2014/03/28(金) 15:09:52.87
>>792
"ソースを読む"って経験をもっと積めばわかる。
お前が思っている以上にソースにはいろんな情報が残されてるんだよ。
それを効率よく読み取れば他人のソースのデバッグも素早くできるようになる。

ここまで見た
  • 795
  •  
  • 2014/03/28(金) 22:47:50.13
などとスパゲティーソース職人が言ってます。

ここまで見た
  • 796
  •  
  • 2014/03/28(金) 22:59:10.26
理解できないソースを自分の主義に合わせて書き直したら理解できたことがあった。

ここまで見た
  • 797
  •  
  • 2014/03/28(金) 23:17:59.05
c言語のソースコードでデッドロックを実現するようなコードってかけますか?

ここまで見た
  • 798
  • KAC
  • 2014/03/28(金) 23:33:18.88
>>797
デッドロックを実現ってのが、デッドロックで処理を止めるって意味なら
別に言語に依存しない話だから、C言語でも書けるぞ?

ここまで見た
  • 799
  •  
  • 2014/03/28(金) 23:34:15.49
>>798
例えば?

ここまで見た
  • 800
  • KAC
  • 2014/03/28(金) 23:36:38.30
>>799
ん?
デッドロックってのがどういうものか理解してる?

ここまで見た
  • 801
  •  
  • 2014/03/28(金) 23:39:21.89
OSのシステムコールとか使わずにって意味じゃないか

ここまで見た
  • 802
  •  
  • 2014/03/28(金) 23:49:32.32
コテの方がマトモってのは珍しいな
いつもおかしいのに

ここまで見た
  • 803
  •  
  • 2014/03/29(土) 00:43:46.74
>>797
デッドロック(dead lock, 死のロック)という言葉のとおり、
デッドロックは意図せず起きてしまうロック、要するに「バグ」の一種
だから「(意図的に)デッドロックを実現する」という文章そのものが
意味不明になっている
解決したい課題を再考してから、質問をやり直した方がいいと思われ

>>798
物知り顔で質問者を惑わす回答は、良くない行為だよ
もともと頭が悪いみたいだからしかたないかもしれないけど、
コテが自己顕示欲だけの馬鹿ばかりという法則そのままだ

ここまで見た
  • 804
  •  
  • 2014/03/29(土) 01:11:17.81
だんだん良く分からない流れになってまいりました

ここまで見た
  • 805
  •  
  • 2014/03/29(土) 01:14:09.28
人工無能が吐き出したような抽象論でも当たることはあるってことが示された

ここまで見た
  • 806
  •  
  • 2014/03/29(土) 03:23:46.19
>>803
デッドロックはAさんとBさんが互いに相手がロックしてるリソースを待ち合って動けなくなった状態だよ。
意図的にデッドロックを起こす事もできるよ。

ここまで見た
  • 807
  •  
  • 2014/03/29(土) 04:24:31.01
Aさん「私待ってるから」
Bさん「私も」
AB「まだかなー?」

ここまで見た
  • 808
  •  
  • 2014/03/29(土) 04:49:35.32
箸と皿 両方握れた者が食事できる
Aさん箸だけ確保 Bさん皿だけ確保 お互い空くのを待ってる

ここまで見た
  • 809
  •  
  • 2014/03/29(土) 08:34:42.01
>>803 これはひどい。後半は自分にアンカーしろよ

ここまで見た
  • 810
  •  
  • 2014/03/29(土) 10:28:59.38
>>806
互いに相手がロックしてる?
つまり共有ロックの事ですか?

ここまで見た
  • 811
  •  
  • 2014/03/29(土) 10:38:38.94
>>810
共有ロックは一つのリソースをロックする場合に発生すること
デッドロックは二つ以上のリソースを個別にロックした場合に発生すること

ここまで見た
  • 812
  •  
  • 2014/03/29(土) 10:40:57.13
3人で待ち合いというのがよく例に出てくる

ここまで見た
  • 813
  •  
  • 2014/03/29(土) 10:50:52.48
共有ロックもデッドロックの一種ですか?
例えばAがCをロックしてBがCもロックしてるってことですよね?
その場合AがCを解除してもBがロックしてるからCにアクセスできない
逆にBがCを解除しても、AがロックしてるからCにアクセスできない
つまりA,Bともに互いの解除を待たなければならない
つまりデッドロックですか?

ここまで見た
  • 814
  •  
  • 2014/03/29(土) 11:35:27.61
それは、使用中のリソースは開放されるまで他が使えないというだけじゃないの?

ここまで見た
  • 815
  •  
  • 2014/03/29(土) 11:44:49.21
哲学者がスパゲティ食おうとしてフォークが空くのを待ってる話

ここまで見た
  • 816
  •  
  • 2014/03/29(土) 11:46:51.23
>>913
金庫の中に金庫の鍵がある状態をイメージしろ
動きによってそれに近い状態になるのがでっどろっく

ここまで見た
  • 817
  •  
  • 2014/03/29(土) 11:59:55.49
>>816
バカはたとえ話するな、余計わからんわ。

ここまで見た
  • 818
  •  
  • 2014/03/29(土) 12:49:36.87
デッドロックって dead lock じゃなくて deadlock であって、こう着状態みたいな状況を表す単語だろ。
ようするに、こう着状態になってなきゃデッロドックじゃないんじゃないの?

共有ロックは状況じゃなくて仕組みの名前でしょ。
読むのは複数に許すけど、書くのは排他的っていうやつ。

ここまで見た
  • 819
  •  
  • 2014/03/29(土) 12:54:22.27
結論として OS の支援なしには dead-lock を起こせない、ということで

ここまで見た
  • 820
  •  
  • 2014/03/29(土) 12:58:49.23
>>813
>>共有ロックもデッドロックの一種ですか?

一般的なロック操作では、あるプロセスが資源をロックすると、
ロックが解除するまでの間、新たなロック操作は必ず待たされる
しかし資源へのアクセスが読み出しだけであるならば、
待たせることなく読み出し操作を実行しても、何ら害は無い

そこで、ロック操作を2つに分類し、用途に応じて使い分ける共有ロック方式が考案された
・共有ロック(shared lock) - 読み出しロックともいう
・排他ロック(exclusive lock) - 書き込みロック、更新ロックともいう
また操作の細分化に伴い、これまでロックの状態は
"未ロック" と "ロック中" の2つであったのに対し、
この方式では "未ロック"、"共有ロック中"、"排他ロック中"の3つに増える
ここで、共有ロック中状態における共有ロック操作は待たされることなく成功する
排他ロックは従来のロックと同じく、未ロック状態の時だけ成功する

>つまりデッドロックですか?

共有ロックは、上記のようにロック方式を指す言葉
デッドロックは(>>803で書いたように)ロックに関連したバグの一種であり、
バグだから一般的なロック方式でも共有ロックでも起こりうる

ここまで見た
  • 821
  •  
  • 2014/03/29(土) 13:03:54.86
>>819
このファイルがあるとロックしてるって事な、みたいな取り決めにしておけば、
あとはファイル作れてプロセスを複数同時に動かせれば起こせるんじゃね?

ここまで見た
  • 822
  •  
  • 2014/03/29(土) 15:33:58.33
何らかの手段でプロセス間の相互作用が提供されてなければデッドロックは起こりようがない
プロセス間の相互作用を提供するのはOSの働き

ここまで見た
  • 823
  •  
  • 2014/03/29(土) 16:03:35.08
>>822
ファイルへのアクセス制御はOSの機能なわけですが…w
OSのサポートがなければ同時にファイル作ろうとしてあぼん

ここまで見た
  • 824
  •  
  • 2014/03/29(土) 16:04:06.65
安価ミス

×>>822
>>821

ここまで見た
  • 825
  •  
  • 2014/03/29(土) 16:09:24.24
>>823
ネットワークドライブとかだとあぼんするタイミングが遅れることがある
なのでopenは成功してしまうことがまれに良くある

砂時計アラームタイマー
フリックラーニング
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード