!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
http://mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part142
■ このスレッドは過去ログ倉庫に格納されています
1名無C ◆jPpg5.obl6 (ワッチョイ 762c-FuHz)
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0659デフォルトの名無しさん (ワッチョイ 6240-51S+)
2019/05/03(金) 20:25:45.58ID:Ue5NRrHW0 >>657
実際に const を使いたかったわけではなく、
問題の切り分けを行った結果として >>652 のように質問させていただいたのですが、
言われてみれば確かに何がしたいのかわからない・・・。
もう少し元の問題に近いコードを提示するなら、以下のような感じです。
==
const Type t = null;
if (t == null) Console.WriteLine("t is null.");
else Console.WriteLine("t is not null."); // 警告なし
const Exception e = null;
if (e == null) Console.WriteLine("e is null.");
else Console.WriteLine("e is not null."); // CS0162 到達できないコードが検出されました
==
実際に const を使いたかったわけではなく、
問題の切り分けを行った結果として >>652 のように質問させていただいたのですが、
言われてみれば確かに何がしたいのかわからない・・・。
もう少し元の問題に近いコードを提示するなら、以下のような感じです。
==
const Type t = null;
if (t == null) Console.WriteLine("t is null.");
else Console.WriteLine("t is not null."); // 警告なし
const Exception e = null;
if (e == null) Console.WriteLine("e is null.");
else Console.WriteLine("e is not null."); // CS0162 到達できないコードが検出されました
==
660デフォルトの名無しさん (アウアウエー Sa3a-3WjD)
2019/05/03(金) 20:54:20.72ID:mscz+0vpa >>659
いやいやいや、俺はおたくにケチつけたわけじゃないよw
const bool y = t == (object)null;
こういうのはぱっと見て意図が分からないと言っただけ。
むしろ「マジックナンバー」を避けるのは良い習慣ですよ
いやいやいや、俺はおたくにケチつけたわけじゃないよw
const bool y = t == (object)null;
こういうのはぱっと見て意図が分からないと言っただけ。
むしろ「マジックナンバー」を避けるのは良い習慣ですよ
661デフォルトの名無しさん (アウアウエー Sa3a-3WjD)
2019/05/03(金) 20:57:46.12ID:mscz+0vpa >>658
>string は == が定義されているもののエラーが出ないようです。
上にも書いたけど、その辺のモヤモヤはC#の言語仕様の「定数式」の箇所を見れば解消するよ。
VSのインストールフォルダに入ってる
>string は == が定義されているもののエラーが出ないようです。
上にも書いたけど、その辺のモヤモヤはC#の言語仕様の「定数式」の箇所を見れば解消するよ。
VSのインストールフォルダに入ってる
662デフォルトの名無しさん (アウアウエー Sa3a-UklA)
2019/05/03(金) 21:13:39.41ID:rGk2iQn5a ひょっとして、ES6あたりの感覚で代入onlyの変数を宣言したくてconstキーワードを使おうとしてるのかなと思ってみたり
readonlyなローカル変数みたいな構文ってC#にはまだないんだよね
readonlyなローカル変数みたいな構文ってC#にはまだないんだよね
663デフォルトの名無しさん (ワッチョイ 6240-51S+)
2019/05/03(金) 22:02:39.62ID:Ue5NRrHW0 >>660
> const bool y = t == (object)null;
> こういうのはぱっと見て意図が分からない
そうですねw
式の意味を考えるなら t == (object)null は
ReferenceEquals(t, null) と書くのがわかりやすいんでしょうけど
const うんぬんの話の中でこれはダメですし。
ちなみに今ふと思いついて試してみたんですが、
t is null も == の定義には依存しないものの定数扱いにはならないようです。
>>661
ありがとうございます。
言われてみると、そもそも C# と CLR の役割自体が正確に区別できていないような
気がしてきたので、これを機会に勉強してみようと思います。
> const bool y = t == (object)null;
> こういうのはぱっと見て意図が分からない
そうですねw
式の意味を考えるなら t == (object)null は
ReferenceEquals(t, null) と書くのがわかりやすいんでしょうけど
const うんぬんの話の中でこれはダメですし。
ちなみに今ふと思いついて試してみたんですが、
t is null も == の定義には依存しないものの定数扱いにはならないようです。
>>661
ありがとうございます。
言われてみると、そもそも C# と CLR の役割自体が正確に区別できていないような
気がしてきたので、これを機会に勉強してみようと思います。
664デフォルトの名無しさん (ワッチョイ 6240-51S+)
2019/05/03(金) 22:03:15.73ID:Ue5NRrHW0 >>662
質問させていただいたのは、
>>659 のコードみたいに CS0162 の警告が出てほしいのに
出てくれない場面があったからです。
でもたしかに readonly なローカル変数はあってもいいですよね。
あと、引数のみに依存して副作用もないメソッドについて
↓みたいな書き方が許されたらいいのに〜とか妄想しましたw
==
static class MathEx
{
public const double Square(double x) => x * x;
}
static class MyConstants
{
public const double SquarePI = MathEx.(Math.PI);
}
==
質問させていただいたのは、
>>659 のコードみたいに CS0162 の警告が出てほしいのに
出てくれない場面があったからです。
でもたしかに readonly なローカル変数はあってもいいですよね。
あと、引数のみに依存して副作用もないメソッドについて
↓みたいな書き方が許されたらいいのに〜とか妄想しましたw
==
static class MathEx
{
public const double Square(double x) => x * x;
}
static class MyConstants
{
public const double SquarePI = MathEx.(Math.PI);
}
==
665デフォルトの名無しさん (ワッチョイ 6240-51S+)
2019/05/03(金) 22:05:09.07ID:Ue5NRrHW0 何度もすみません。。。上の妄想コードは間違いです。
正しくはこちら。
==
static class MathEx
{
public const double Square(double x) => x * x;
}
static class MyConstants
{
public const double SquarePI = MathEx.Square(Math.PI);
}
==
正しくはこちら。
==
static class MathEx
{
public const double Square(double x) => x * x;
}
static class MyConstants
{
public const double SquarePI = MathEx.Square(Math.PI);
}
==
666デフォルトの名無しさん (ドコグロ MM02-jhVB)
2019/05/03(金) 22:55:31.79ID:1vSUmwo4M 実質的に定数ならJITコンパイル時に定数に置き換わるからそんなものは要らん
667デフォルトの名無しさん (ワッチョイ 7b38-lZel)
2019/05/03(金) 23:53:26.41ID:BZD1sthA0 decimalの定数は内部的にアレだけどな
668デフォルトの名無しさん (ブーイモ MM93-Mzt1)
2019/05/04(土) 07:03:09.32ID:Y3LpLEUoM >>667
詳しく
詳しく
669デフォルトの名無しさん (アウアウエー Sa3a-cevp)
2019/05/04(土) 13:03:57.01ID:3sktWiiHa670デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/04(土) 14:32:15.09ID:IHSUUilV0 List.Addって、複数のスレッドから同時に呼び出したらデータが壊れる可能性ってあるの?
671デフォルトの名無しさん (ワッチョイ 06e3-ahOC)
2019/05/04(土) 15:00:48.03ID:NSx1pb1m0 >>670
スレッドセーフじゃないからlock制御を自前で持つか、System.Collections.Concurrentのコレクション使うべき
スレッドセーフじゃないからlock制御を自前で持つか、System.Collections.Concurrentのコレクション使うべき
672デフォルトの名無しさん (ワッチョイ c6da-ahOC)
2019/05/04(土) 15:23:49.46ID:H40F3Pfj0 Queueの出し入れもlock必要だし、マルチスレッドはめんどいよな。
なんでConcurrentDictionaryはあるのにListは無いのか
なんでConcurrentDictionaryはあるのにListは無いのか
673デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/04(土) 15:37:29.51ID:uz0VN5nda >>672
使い道がない
使い道がない
674デフォルトの名無しさん (ドコグロ MM7a-oppc)
2019/05/04(土) 15:38:02.55ID:vy21Hr2ZM 個人的にはスレッド自体に特定のスレッドからのデータを受け取る処理がある方が好き
675デフォルトの名無しさん (ドコグロ MM7a-jhVB)
2019/05/04(土) 15:57:05.65ID:qIB0qWQDM 別々のスレッドから生成された値を集めたいなら、
各スレッドで別のバッファ(List)に値を書き込んでから最後に単一スレッドでマージするのが定番
各スレッドで別のバッファ(List)に値を書き込んでから最後に単一スレッドでマージするのが定番
676デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/04(土) 17:20:59.03ID:pMssk1qR0 スレッドセーフって実はどういう動作するのかよく知らないぜ
677デフォルトの名無しさん (ワッチョイ 06f2-ahOC)
2019/05/04(土) 17:27:01.27ID:0zm1CIpf0678デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/04(土) 20:18:11.93ID:pMssk1qR0 APIのマニュアルにおいて「スレッドセーフ」という言葉が用いられる場合、たいていは「複数のスレッドからアクセスされても例外を出さない、プログラムがクラッシュしない」というような意味です。
しかしプログラムの目的によっては、例外が出ないだけでは不適切です。
例えば対象が、100個のデータを管理する変数だとします。
その100個のデータに対して、1つ目から順に処理するスレッドと、50個目から変更するスレッドが同時に動いたらどうなるでしょうか? 結果は不定です。
この例では、排他処理 (C#なら lock ステートメントなど) と呼ばれる処置が必要になります。
ってググって出たサイトで拾った
しかしプログラムの目的によっては、例外が出ないだけでは不適切です。
例えば対象が、100個のデータを管理する変数だとします。
その100個のデータに対して、1つ目から順に処理するスレッドと、50個目から変更するスレッドが同時に動いたらどうなるでしょうか? 結果は不定です。
この例では、排他処理 (C#なら lock ステートメントなど) と呼ばれる処置が必要になります。
ってググって出たサイトで拾った
679デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/04(土) 20:25:20.65ID:pMssk1qR0 つまり
for(int i=0;i<lst.count;i++)
{
unk un=lst[i];
略
}
みたいなプログラムを組んだとき
どっかでいきなり要素をゼロにされて死ぬってことは
スレッドセーフだろうがどうだろうが可能性はあるってことだよね
ってことを考えるとスレッドセーフである意味ってあんまりなくて
排他処理は絶対実装しないと駄目だよね?ってこと?
誰か違うと言ってくれ
for(int i=0;i<lst.count;i++)
{
unk un=lst[i];
略
}
みたいなプログラムを組んだとき
どっかでいきなり要素をゼロにされて死ぬってことは
スレッドセーフだろうがどうだろうが可能性はあるってことだよね
ってことを考えるとスレッドセーフである意味ってあんまりなくて
排他処理は絶対実装しないと駄目だよね?ってこと?
誰か違うと言ってくれ
680デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/04(土) 20:59:32.71ID:Ui9BQ5TxM スレッドセーフはメソッド内などで一貫性を保てる作り
排他制御が必要な場面でやってないなど作り手のロジックミスには対応出来るわけがない
排他制御が必要な場面でやってないなど作り手のロジックミスには対応出来るわけがない
681デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/04(土) 21:06:21.08ID:Ui9BQ5TxM スレッドセーフである意味
あるオブジェクトがプロパティAを持っててメソッド内で
b=aaa(A)+bbb(A);
を計算しようとしても複数のスレッドからアクセスされることを考慮されていなければ
最初のAと次のAが違う場合があり計算結果が期待したものにならないかもしれない
スレッドセーフはこういう場合でもちゃんと計算される仕組みを持つ
あるオブジェクトがプロパティAを持っててメソッド内で
b=aaa(A)+bbb(A);
を計算しようとしても複数のスレッドからアクセスされることを考慮されていなければ
最初のAと次のAが違う場合があり計算結果が期待したものにならないかもしれない
スレッドセーフはこういう場合でもちゃんと計算される仕組みを持つ
682デフォルトの名無しさん (アウアウエー Sa3a-cevp)
2019/05/04(土) 21:07:23.59ID:3sktWiiHa >>679
その処理は要素数チェックと要素アクセスが分かれているから、間に他スレッドからの処理が割り込み得る
System.Collections.Concurrent系のコレクションは、
例えば「要素があるなら取得」のようなまとまった処理がatomicになっているので、他スレッドからの割り込まれない(=スレッドセーフ)
どっかのスレッドで詰めて、別のスレッドでループ処理、がやりたいのならBlockingCollectionが楽
その処理は要素数チェックと要素アクセスが分かれているから、間に他スレッドからの処理が割り込み得る
System.Collections.Concurrent系のコレクションは、
例えば「要素があるなら取得」のようなまとまった処理がatomicになっているので、他スレッドからの割り込まれない(=スレッドセーフ)
どっかのスレッドで詰めて、別のスレッドでループ処理、がやりたいのならBlockingCollectionが楽
683デフォルトの名無しさん (ドコグロ MM7a-jhVB)
2019/05/04(土) 21:27:48.58ID:qIB0qWQDM684デフォルトの名無しさん (ワッチョイ e22f-GsKc)
2019/05/04(土) 22:09:10.98ID:56LrGuhB0 非同期処理は複数のスレッドが同じデータを弄ろうとすることによる不整合は起きないけど
コールスタックは複数になるから
同じデータに触ると訳ワカメになる事があった
コールスタックは複数になるから
同じデータに触ると訳ワカメになる事があった
685デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/04(土) 23:16:04.81ID:pMssk1qR0 (||゚Д゚)ヒィィィ!(゚Д゚||)
じゃあ>>679みてーな処理を書いたら
スレッドセーフなんて関係なく
バグるんだね
こぇえええええ
じゃなくて終わったわ
今まで組んだもんでテキトーにやった箇所全部終わってる気がする
じゃあ>>679みてーな処理を書いたら
スレッドセーフなんて関係なく
バグるんだね
こぇえええええ
じゃなくて終わったわ
今まで組んだもんでテキトーにやった箇所全部終わってる気がする
686デフォルトの名無しさん (アウアウエー Sa3a-UklA)
2019/05/04(土) 23:28:33.99ID:J15hVQV0a まあ複数スレッドで同時並行処理するときにはそのへん慎重を期さないと
再現困難なバグを埋め込んじゃうからねえ
同時に読み書きする可能性のある変数を安易に書き換え/差し替えしちゃダメ
再現困難なバグを埋め込んじゃうからねえ
同時に読み書きする可能性のある変数を安易に書き換え/差し替えしちゃダメ
687デフォルトの名無しさん (ワッチョイ e22c-4xtZ)
2019/05/05(日) 05:07:07.08ID:tvdtPjB+0 マルチスレッドの恐ろしさは、たまにしかバグらない事。
ほとんどは正常に動くから、質が悪い。
必ず、バグらないだろ
それで喧嘩になる事も多い。
マルチスレッドは、ベテランでもバグるからやめろと言っても、
ほら、バグらないでしょ? と、突っかかってくる
その時には、バグらないと言うと、
千回実行しても、バグらないでしょ? と、突っかかってくる。
でも、その時にはバグらない
バグる立証をするのが難しい
だから、Ruby をやった人は、関数型言語のElixir をやる。
他の言語の人は、何を言っても、そのテスト回数でバグらないと言ってくるから、質が悪い
1万回実行しても、10万回実行しても、その時にはバグらないものなんだよ。
何回バグらないで実行すれば、正しいと認めるのか、と問われても困る
ほとんどは正常に動くから、質が悪い。
必ず、バグらないだろ
それで喧嘩になる事も多い。
マルチスレッドは、ベテランでもバグるからやめろと言っても、
ほら、バグらないでしょ? と、突っかかってくる
その時には、バグらないと言うと、
千回実行しても、バグらないでしょ? と、突っかかってくる。
でも、その時にはバグらない
バグる立証をするのが難しい
だから、Ruby をやった人は、関数型言語のElixir をやる。
他の言語の人は、何を言っても、そのテスト回数でバグらないと言ってくるから、質が悪い
1万回実行しても、10万回実行しても、その時にはバグらないものなんだよ。
何回バグらないで実行すれば、正しいと認めるのか、と問われても困る
688デフォルトの名無しさん (ワッチョイ e201-R0y6)
2019/05/05(日) 06:10:17.07ID:BzgWdCy40 アクマノショウメイ
689デフォルトの名無しさん (ドコグロ MM02-jhVB)
2019/05/05(日) 08:46:40.02ID:TKrOuc6uM >>687
喧嘩になるのはマルチスレッドのバグのせいではなくお前の頭がバグってるから
喧嘩になるのはマルチスレッドのバグのせいではなくお前の頭がバグってるから
690デフォルトの名無しさん (ワッチョイ 0663-Cg3z)
2019/05/05(日) 08:57:36.80ID:Vqy33e5r0 エビデンスとれてりゃ突きつけるだけなのに
691デフォルトの名無しさん (ワッチョイ 8252-M0pk)
2019/05/05(日) 10:34:54.98ID:RPhfdkos0 >>687
マルチスレッドはバグるからやめろってなるのでなく、バグが無いように作れよ。
あと、お前の意見を相手が聞き入れず喧嘩になるのは、お前がいつもバカなことを言うから相手は当然受け入れる気にならず、お前にはその自覚がなくて「何でアイツは僕の言うことを理解してかれないんだウワアーーー」ってなってるからだぞ。
マルチスレッドはバグるからやめろってなるのでなく、バグが無いように作れよ。
あと、お前の意見を相手が聞き入れず喧嘩になるのは、お前がいつもバカなことを言うから相手は当然受け入れる気にならず、お前にはその自覚がなくて「何でアイツは僕の言うことを理解してかれないんだウワアーーー」ってなってるからだぞ。
692デフォルトの名無しさん (ワントンキン MM92-sito)
2019/05/05(日) 10:45:50.32ID:bYgaGqRgM >>687
なんでバグが起こってるのか原因特定出来てなくてワロタ
なんでバグが起こってるのか原因特定出来てなくてワロタ
693デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/05(日) 10:48:34.16ID:uudMW5nw0 スレッドセーフは単発のメソッドが競合しないだけで
一連の処理についての動作保証をするものではないと
マルチスレッドはやらなくていいならそれに越したことはないけど
絶対に駄目というわけではなく
排他処理を組まないことが害悪
一連の処理についての動作保証をするものではないと
マルチスレッドはやらなくていいならそれに越したことはないけど
絶対に駄目というわけではなく
排他処理を組まないことが害悪
694デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 11:21:06.67ID:IBoHsNppa 排他制御をしなくても安全に並列処理できるように設計することが大事
まずはロック、クリティカルセクション、ミューテックス、セマフォ、といった待ち時間を発生させるタイプの機能を使ったら負け、というルールで設計に挑戦してみるといい
大半の並列処理でそんなものは必要ないこと、それらを使わないほうが圧倒的に設計とプログラムが綺麗になることを体験するべき
まずはロック、クリティカルセクション、ミューテックス、セマフォ、といった待ち時間を発生させるタイプの機能を使ったら負け、というルールで設計に挑戦してみるといい
大半の並列処理でそんなものは必要ないこと、それらを使わないほうが圧倒的に設計とプログラムが綺麗になることを体験するべき
695デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 11:29:03.77ID:Q2loWuJOM シネ
696デフォルトの名無しさん (アウアウクー MM9f-GsKc)
2019/05/05(日) 12:22:10.03ID:6g/cxz/+M ぱられるふぉーってのを使えば良いんじゃね?
知らんけど
知らんけど
697デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/05(日) 12:32:51.31ID:uudMW5nw0698デフォルトの名無しさん (ワッチョイ 1242-ahOC)
2019/05/05(日) 13:01:26.26ID:EeTrV1LT0699デフォルトの名無しさん (ドコグロ MM02-oppc)
2019/05/05(日) 13:15:03.75ID:l159r3xkM >>698
それって記述が簡単ってだけでしょ?
ロック中にアクセスしたらどういう動作するの?
次回に回すの?
待機して待つの?
そういうのってスレッド毎にステータスを持たせて
マトリックスで管理しないと制御できてると俺は認めない
ジジイだから
それって記述が簡単ってだけでしょ?
ロック中にアクセスしたらどういう動作するの?
次回に回すの?
待機して待つの?
そういうのってスレッド毎にステータスを持たせて
マトリックスで管理しないと制御できてると俺は認めない
ジジイだから
700デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/05(日) 13:34:55.82ID:1Pm7tIcB0 VisualBasic大先生を怒らせてしまったようだな
701デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 13:41:27.68ID:IBoHsNppa >>698
だからさ
そんな不安定なロジックを書かなくても良いようにちゃんと設計するのが並列処理の王道なんだよ
lockブロックは最初の一回を書くときは楽かもしれんがだんだん難しくなるぞ
そのコレクションを使う全てのプログラマが並列性を意識して正確に排他制御をコーディングしなければならない
これは実用的なシステムの規模になるとかなり大きな負担になる
だからさ
そんな不安定なロジックを書かなくても良いようにちゃんと設計するのが並列処理の王道なんだよ
lockブロックは最初の一回を書くときは楽かもしれんがだんだん難しくなるぞ
そのコレクションを使う全てのプログラマが並列性を意識して正確に排他制御をコーディングしなければならない
これは実用的なシステムの規模になるとかなり大きな負担になる
702デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 14:02:39.93ID:IBoHsNppa そもそもロックって論外なんだわ
世の中の並列処理の目的ってのはほぼ2種類に分類されるんだよ
@インフラストラクチャ処理中にCPUを待たせたくない
A消費コア数を増やして暇なCPUを働かせたい
よーするにCPUを無駄にしたくないわけ
でもロックしちゃうと問答無用でCPUが何もせずに止まっちゃう
ロックすると並列処理をする目的そのものに反してしまう
なのでロックは基本使わず最後の手段ってわけ
この辺りは(やや古い本だが)Microsoft Pressのプログラミング.NET Franework第4版やEffectiveシリーズでも解説されてることだね
どちらも良書なので脱初心者を目指しているだろう君達は是非とも読むべきだ
世の中の並列処理の目的ってのはほぼ2種類に分類されるんだよ
@インフラストラクチャ処理中にCPUを待たせたくない
A消費コア数を増やして暇なCPUを働かせたい
よーするにCPUを無駄にしたくないわけ
でもロックしちゃうと問答無用でCPUが何もせずに止まっちゃう
ロックすると並列処理をする目的そのものに反してしまう
なのでロックは基本使わず最後の手段ってわけ
この辺りは(やや古い本だが)Microsoft Pressのプログラミング.NET Franework第4版やEffectiveシリーズでも解説されてることだね
どちらも良書なので脱初心者を目指しているだろう君達は是非とも読むべきだ
703デフォルトの名無しさん (ドコグロ MM7a-jhVB)
2019/05/05(日) 14:08:00.64ID:kZz1htUnM その通り
極端な話、並列処理なんてそれぞれ別のサーバーで実行させりゃいいんだよ
それがレイテンシやコストなどの問題で無理なら代わりにプロセスを分ければいい
そもダメならリクエストやワーカー単位でスレッドを分け、といった具合に、共有するリソースを最小限にすることを優先する
極端な話、並列処理なんてそれぞれ別のサーバーで実行させりゃいいんだよ
それがレイテンシやコストなどの問題で無理なら代わりにプロセスを分ければいい
そもダメならリクエストやワーカー単位でスレッドを分け、といった具合に、共有するリソースを最小限にすることを優先する
704デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 17:40:50.25ID:Q2loWuJOM ジジイだから能力低いだけだろ
705デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/05(日) 18:00:00.04ID:1Pm7tIcB0 非同期処理全盛の時代にこれじゃ、世の中やばいコード(or非同期処理のつもりが同期処理されてるコード)だらけだろうな
Qiitaとか見ててもやばい奴だらけだ
Qiitaとか見ててもやばい奴だらけだ
706デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 18:04:40.39ID:IBoHsNppa707デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/05(日) 18:09:44.07ID:1Pm7tIcB0 そもそも、世のサンプルプログラムの多くが欠陥品なのが諸悪の根幹なのかもな
劣化コピーしちゃうQiita屋とかコピペプログラマが全部危険なコードを書いてしまう
劣化コピーしちゃうQiita屋とかコピペプログラマが全部危険なコードを書いてしまう
708デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:19:48.84ID:Q2loWuJOM 一番パフォーマンスの良いMutexを使ってる人がどれだけいるやら
709デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 18:23:53.97ID:IBoHsNppa710デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:27:02.59ID:Q2loWuJOM 他人に迷惑をかける基地外はシネ
711デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:33:04.85ID:Q2loWuJOM webサーバでスレッド一個で処理を完結するようにはなっていないだろ
712デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 18:33:17.95ID:IBoHsNppa Mutexは相変わらずスレッドをブロックするうえにMonitorよりも消費リソースが大きい
その代わりプロセスを超えて待機処理を実装できるというものだ
よーするにlockよりもっと遅いんだよ
その代わりプロセスを超えて待機処理を実装できるというものだ
よーするにlockよりもっと遅いんだよ
713デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:34:49.31ID:Q2loWuJOM714デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 18:37:30.50ID:IBoHsNppa715デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:38:33.24ID:Q2loWuJOM 5分で確認できることをできない老害
716デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/05(日) 18:41:05.51ID:1Pm7tIcB0 Mutexはロックがいらないスレッド同士でもロックしちゃうのが使いづらいな
回避できるのかはしらんが
回避できるのかはしらんが
717デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:41:10.65ID:Q2loWuJOM そもそもスレッドがとまると言ってるけどCPUのスレッドと.netのスレッド混同してそう
718デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:41:50.97ID:Q2loWuJOM > でもロックしちゃうと問答無用でCPUが何もせずに止まっちゃう
これ笑う所?
これ笑う所?
719デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:45:15.15ID:Q2loWuJOM ロックしちゃうと問答無用でCPUが何もせずに止まっちゃうわけないだろw
720デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/05(日) 18:47:01.12ID:uudMW5nw0 え?lock中にアクセスしようとしたらどうなるの?
721デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/05(日) 18:48:17.37ID:1Pm7tIcB0 ロックが取得できないだけ
722デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:48:31.54ID:Q2loWuJOM お前のPCは8スレッドぐらい動かしたら止まるの?
723デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 18:51:01.09ID:IBoHsNppa724デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:51:41.98ID:Q2loWuJOM >>723
ググってきたのかよ低能さん
ググってきたのかよ低能さん
725デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/05(日) 18:52:07.51ID:uudMW5nw0 >>721
そんときのコードってどう書くの?
そんときのコードってどう書くの?
726デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 18:53:42.23ID:IBoHsNppa >>724
調子のんなよ重箱の隅つつきマン
調子のんなよ重箱の隅つつきマン
727デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 18:55:47.24ID:Q2loWuJOM728デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/05(日) 19:00:35.89ID:IBoHsNppa729デフォルトの名無しさん (ブーイモ MM93-R0y6)
2019/05/05(日) 19:00:46.75ID:Q2loWuJOM どう見ても間違っている内容で煽られると人はどう思うのか
どう考えても仕組み上Mutexのほうが遅い
どう考えても仕組み上Mutexのほうが遅い
730デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/05(日) 19:07:06.98ID:1Pm7tIcB0731デフォルトの名無しさん (ワッチョイ 9b61-oppc)
2019/05/05(日) 19:12:25.48ID:uudMW5nw0 >>730
だよね
ちょっと調べてるけど
普通の排他処理組んでおきたくて
lock
ReaderWriterLockSlim
UpgradeableReadLock
なんか普通の排他処理したいだけなのに
たくさん出てきちゃったぞ
これ全部使っても
ん?排他処理できてんのか?
って疑問が晴れない
この言語非同期処理の対応手薄なんだよねまだ
時期尚早として触らんことにしたw
だよね
ちょっと調べてるけど
普通の排他処理組んでおきたくて
lock
ReaderWriterLockSlim
UpgradeableReadLock
なんか普通の排他処理したいだけなのに
たくさん出てきちゃったぞ
これ全部使っても
ん?排他処理できてんのか?
って疑問が晴れない
この言語非同期処理の対応手薄なんだよねまだ
時期尚早として触らんことにしたw
732デフォルトの名無しさん (ワッチョイ f72d-/hjB)
2019/05/05(日) 19:21:47.99ID:1Pm7tIcB0 LockやMutexは初心者本の範囲内だからしらんのはまずいよ
733デフォルトの名無しさん (ブーイモ MM93-ajP6)
2019/05/05(日) 19:45:53.31ID:VmrJwxHQM 非同期のチートシートないの?
734デフォルトの名無しさん (ワッチョイ 4e42-ahOC)
2019/05/05(日) 19:57:32.38ID:LYwUBfu90 https://qiita.com/tadokoro/items/28b3623a5ec58517d431
測った人によると
nterlocked > lock > SemaphoreSlim > Semaphore > Mutexだってさ
測った人によると
nterlocked > lock > SemaphoreSlim > Semaphore > Mutexだってさ
735デフォルトの名無しさん (ワッチョイ cb02-Xm0a)
2019/05/06(月) 02:20:35.00ID:wkmj+bF20 並列処理なら.netなんだからF#でSTM使え。
何で関数型言語が注目されたんだよ。
並列処理に有利だからだろ。
何で関数型言語が注目されたんだよ。
並列処理に有利だからだろ。
736デフォルトの名無しさん (ワッチョイ e22c-4xtZ)
2019/05/06(月) 04:59:30.75ID:wr9bFPpT0 マルチスレッドなんか無理!
だから、Ruby の人は、Elixir を使う
作るのに何百年も掛かる、人類の成果、Erlang VM + Ruby = Elixir。
ErlangVMを、Rubyでラップしたもの
Elixirの小プロセスなら、10万プロセスも余裕!
パイプラインと同じ
関数型だから状態を持たない。
ただ、データを変換していく関数をつなげていくだけ!
だから、Ruby の人は、Elixir を使う
作るのに何百年も掛かる、人類の成果、Erlang VM + Ruby = Elixir。
ErlangVMを、Rubyでラップしたもの
Elixirの小プロセスなら、10万プロセスも余裕!
パイプラインと同じ
関数型だから状態を持たない。
ただ、データを変換していく関数をつなげていくだけ!
737デフォルトの名無しさん (ワッチョイ df01-jhVB)
2019/05/06(月) 07:40:48.06ID:WDjCowqB0 >>736
Rubyにマルチスレッドは、無理!
RubyはいわゆるGILといって、同時に複数のスレッドが走らないような排他制御がVMレベルでかかっている
これはVM自体がスレッドセーフでないクソ実装であることに起因する制約である
もちろんC#にはそんなものはないし、ベンチマークだとErlangより速い
Rubyにマルチスレッドは、無理!
RubyはいわゆるGILといって、同時に複数のスレッドが走らないような排他制御がVMレベルでかかっている
これはVM自体がスレッドセーフでないクソ実装であることに起因する制約である
もちろんC#にはそんなものはないし、ベンチマークだとErlangより速い
738デフォルトの名無しさん (ワッチョイ cb5f-51S+)
2019/05/06(月) 12:19:36.88ID:zGa1jTsu0 Windows8.1/10の令和対応アップデートでWinFormsの画面レイアウトが崩れるらしいね
739デフォルトの名無しさん (ワッチョイ 7b0c-ahOC)
2019/05/06(月) 12:48:42.80ID:w2Z6VwVJ0 お前んとこのWinformsいつもレイアウト崩れてんな
740デフォルトの名無しさん (スププ Sd02-JQY/)
2019/05/06(月) 12:59:34.99ID:rtkPFZMSd741デフォルトの名無しさん (ドコグロ MM2b-oppc)
2019/05/06(月) 13:02:49.51ID:4h7Vjk7HM742デフォルトの名無しさん (ワッチョイ 4f85-9El8)
2019/05/06(月) 21:06:24.34ID:Gi+4ls7q0 画面レイアウトがクソみたいに崩れたぞ死ねや
743デフォルトの名無しさん (ワッチョイ 4f85-ahOC)
2019/05/06(月) 21:19:39.33ID:Gi+4ls7q0 >>740
どうやってやるのそれ?
visual studio開いた時点ですでに崩れてて手動で戻すしかなさそうなんだが。
【警鐘】[改元][Windows][.NET] 「令和」対応パッチで画面が横に伸びる、文字が見切れる ― Windows Update 手動更新はちょっと待った方がいい
https://qiita.com/CodeOne/items/22004635d3c7cc533e5e
どうやってやるのそれ?
visual studio開いた時点ですでに崩れてて手動で戻すしかなさそうなんだが。
【警鐘】[改元][Windows][.NET] 「令和」対応パッチで画面が横に伸びる、文字が見切れる ― Windows Update 手動更新はちょっと待った方がいい
https://qiita.com/CodeOne/items/22004635d3c7cc533e5e
744デフォルトの名無しさん (ワッチョイ 067b-15o0)
2019/05/06(月) 21:32:21.57ID:lj/6a9HB0745デフォルトの名無しさん (ワッチョイ 4f85-ahOC)
2019/05/06(月) 21:39:51.78ID:Gi+4ls7q0746デフォルトの名無しさん (ワッチョイ 622f-0fpa)
2019/05/07(火) 00:11:46.09ID:HkLoI6gC0 >>740
令和を1文字で表すやつのために、フォントをいじったんだが、そのときに既存の文字の幅が変わったらしい
なのでまあ、令和対応のせいだと言えばそうなんじゃね
つか明日からどれだけ影響出てるか考えると鬱だわ
令和を1文字で表すやつのために、フォントをいじったんだが、そのときに既存の文字の幅が変わったらしい
なのでまあ、令和対応のせいだと言えばそうなんじゃね
つか明日からどれだけ影響出てるか考えると鬱だわ
747デフォルトの名無しさん (ワッチョイ 8247-JQY/)
2019/05/07(火) 01:24:56.82ID:A2KlUElc0 納期直前でGW返上してる最中にこの不具合対応しなきゃいけなくなってかなりイラッとした
748デフォルトの名無しさん (アウアウエー Sa3a-jhVB)
2019/05/07(火) 08:16:44.51ID:h85TWq9Qa https://devblogs.microsoft.com/dotnet/introducing-net-5/
.NET Framework 終了のお知らせ
Coreへ移行できないドカタは永遠に4.xに取り残されることが決定したようだ
.NET Framework 終了のお知らせ
Coreへ移行できないドカタは永遠に4.xに取り残されることが決定したようだ
749デフォルトの名無しさん (ワッチョイ 9b42-ahOC)
2019/05/07(火) 08:55:31.55ID:H2EGG+st0750デフォルトの名無しさん (スップ Sd22-JiSW)
2019/05/07(火) 08:58:10.52ID:Q8AOfbVkd Java interoperabilityって何なんだよ…
751デフォルトの名無しさん (ラクッペ MMaf-7dwh)
2019/05/07(火) 09:30:59.37ID:n4vre8LhM >>748
出来損ないは過去に葬った方が世の中のためだぁ
出来損ないは過去に葬った方が世の中のためだぁ
752デフォルトの名無しさん (ワッチョイ 23ae-siGz)
2019/05/07(火) 10:21:58.95ID:vw5zJnlq0 バージョンを頻繁に上げるのは、
成熟していないってことでは?
成熟していないってことでは?
753デフォルトの名無しさん (ワッチョイ 6210-R0y6)
2019/05/07(火) 11:33:46.06ID:4Mlb2ms50 FrameworkからCoreに移行できないのはどういう場合ですか?
754デフォルトの名無しさん (ワッチョイ 1763-ajP6)
2019/05/07(火) 11:59:10.66ID:25JpTCOf0 え、winformはどうなるの??
755デフォルトの名無しさん (アウアウエー Sa3a-kXAv)
2019/05/07(火) 12:06:04.60ID:b+Ix+FO0a 最近のmicrosoftかなり攻めてるな
756デフォルトの名無しさん (ワッチョイ 9b61-ahOC)
2019/05/07(火) 13:10:26.59ID:eYh/lhy30 .net frameworkからcoreなんてどこかちょろっといじったらいいだけじゃないの?
VB6からVB.netほどの変化はないんだろ?
VB6からVB.netほどの変化はないんだろ?
757デフォルトの名無しさん (ドコグロ MM2b-jhVB)
2019/05/07(火) 13:37:50.62ID:9iRY6hHtM758デフォルトの名無しさん (ワッチョイ 1f12-7dwh)
2019/05/07(火) 13:46:35.16ID:9CwYXDcE0 別に移行しなくてもいいですけど保守には特別料金いただきまっせ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 高市早苗「竹島は日本領土」 [834922174]
- あくたんのおまんこって甘そうだよな🤤
- ヨドバシ店員「転売対策です。エヴァに出てくるロボットの名前をどれかひとつ言ってください」 [268718286]
- 🏡
- 暖房やめて湯たぼんにしようと思ってる
