ふらっと C#,C♯,C#(初心者用) Part142

■ このスレッドは過去ログ倉庫に格納されています
2019/03/07(木) 06:35:41.12ID:6L3KEJfe0
!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
2019/05/01(水) 14:49:13.86ID:lxO04VNX0
>>621
無いよ
this以外にするとインデックス付きプロパティって意味になると思うけど、c#には無い
2019/05/01(水) 14:51:52.86ID:U25K78xGa
>>621
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/classes#indexers
> indexer_declarator
> : type 'this' '[' formal_parameter_list ']'
> | type interface_type '.' 'this' '[' formal_parameter_list ']'
> ;
入るのはthisだけで、this以外が入る余地はない
624デフォルトの名無しさん (ワッチョイ 252d-t87J)
垢版 |
2019/05/01(水) 15:04:58.50ID:NTU1YIA40
ありがとう
無いものについてパッとわかるとか驚くぜ
2019/05/02(木) 05:11:25.37ID:fWQ7EMkU0
メモ
https://www.enterprisedb.com/download-postgresql-binaries
https://www.devart.com/odbc/postgresql/
https://visualstudio.microsoft.com/ja/thank-you-downloading-visual-studio/?sku=Community&;rel=16
https://www.nuget.org/packages/MySql.Data/
https://www.nuget.org/packages/Npgsql/
https://www.nuget.org/packages/dotConnect.Express.for.PostgreSQL/
https://www.nuget.org/packages/Microsoft.Office.Interop.Excel/
https://www.pgadmin.org/download/pgadmin-4-windows/
https://dev.mysql.com/downloads/
2019/05/02(木) 06:26:48.77ID:qeQLZJi00
そういうのはQiitaでやれ(Qiita警察激怒)
2019/05/02(木) 12:04:50.67ID:ir+Ne9RR0
メモ系ツールなんて山ほどあるのにわざわざこんなところに書くのか
俺こんなの調べてんだぜすごいだろ?みたいな承認欲求なのかね?
2019/05/02(木) 19:31:55.56ID:Plm8DXbx0
初心者ですが、乱数系列の初期化(Randomクラスのオブジェクトの生成)は
どこに書くのが正解なんでしょうか?

関数の中に書くと、関数が呼び出されるたびに初期化されるんじゃ?と思えるのでちょっと拙い
関数の外側にプログラムの初めの辺に書いておけばいいのかなあ?とも思うのですが、それもカッコ悪い
2019/05/02(木) 19:36:11.39ID:rtZHUO2Da
>>628
依存性として注入するのが定石
2019/05/02(木) 20:19:04.27ID:Plm8DXbx0
依存性 注入で検索したらいろいろ出てきたので調べてみます
631デフォルトの名無しさん (ワッチョイ cb02-Xm0a)
垢版 |
2019/05/03(金) 03:27:08.36ID:eVcW5sZJ0
>>628
最近のは年月日時分秒を整数にして種にしてるっぽいから、
毎回初期化の方がランダム性が高まるんじゃないかと思ってる。
2019/05/03(金) 03:31:56.40ID:t597qxt20
>>628
仕様次第
乱数の仕様を設計書に明記する必要がある
2019/05/03(金) 12:41:41.06ID:Xwdpydd1a
>>628
訳分からん解答が続いてるけど、素直に

インスタンス固有である必要があるならコンストラクタに
staticでよいなら静的コンストラクタに

書けばいいだけ。かっこ悪いとか、くだらないことに悩むのは時間の無駄。
この場合は不要だと思うけど、静的コンストラクタが実行されるのはそのクラスの
静的メンバーに初めてアクセスされたタイミングだと思ったので、その点は場合によっては注意
2019/05/03(金) 12:51:40.57ID:JARezKaea
>>633
嘘を教えるな
そんな馬鹿な使い方をしたらテストできなくなるだろ
2019/05/03(金) 13:16:48.56ID:JqDPcuspM
private staticなら単体テストには支障ないだろ
厳密な再現性を求めるなら本来はシードを固定するべきだが
2019/05/03(金) 13:23:25.74ID:Xwdpydd1a
どっからテストとか出てくるんだw
意味が分からん
2019/05/03(金) 13:28:31.30ID:5Dkgrzu1M
>>633
そもそも因果関係が逆だよな
キモメンが書いたコードがダサい
2019/05/03(金) 13:39:56.17ID:ffSbfxo8M
>>636
staticだとコンストラクタで実装を差し替えられないから単体テストの邪魔になりやすいというのは一般論としてはある
Randomを差し替える必要があるケースは極めて稀だが、上で述べたように厳密な再現性が求められるケースならありえなくもない
2019/05/03(金) 13:45:36.92ID:JARezKaea
>>635
直近のN回が特定の数列の場合のテストとかしにくいだろちったあかんがえろ

>>636
テストしねーのかてめー?終わっとるな
640デフォルトの名無しさん (ワッチョイ f72d-/hjB)
垢版 |
2019/05/03(金) 13:57:48.60ID:Zy40eisO0
>>639
横からすまんが、そのテストしにくい例ってのをコードで見せてくれんかな
学習のためにどうか頼むわ
2019/05/03(金) 14:05:21.52ID:N/aYDMHoM
>>640
例えばガチャを作ってるとして、0-999の乱数で0-9が出たらSSRを排出する仕様なら、
0と9と10くらいを決め打ちでテストしたくなるだろ?
まあそのために乱数生成器をモックしなきゃいけないような設計には再考の余地があると思うが、状況としては普通にありえるだろう
2019/05/03(金) 14:07:16.80ID:roEz64M2M
あなるあなる肛門肛門
2019/05/03(金) 14:07:36.88ID:roEz64M2M
すまん誤爆でした!!!
2019/05/03(金) 14:09:46.15ID:Xwdpydd1a
だから質問者はそんなこと聞いてないって...
どんだけ独りよがりの妄想展開するんだよ
2019/05/03(金) 14:11:43.11ID:roEz64M2M
>>644
うるせーばか子ね
2019/05/03(金) 14:16:40.44ID:JARezKaea
現在時刻とか乱数みたいな制御しにくい値はインジェクションする
これ常識な
勉強になったねきみたち
2019/05/03(金) 14:47:40.00ID:3MJf1YjB0
>>644
カッコイイか悪いかだから
って問題があってカコワルイ
ってつければ質問者の望む回答
2019/05/03(金) 15:12:05.72ID:uS7vqCXY0
>>639
本末転倒だろう。
作るべき物の要件に合わせて乱数生成の挙動を定義して設計するのが優先すべき事項で、その実装をテストするためのコードは必要に応じて用意すればいいだろう。
2019/05/03(金) 15:31:58.12ID:JARezKaea
>>648
それはアマチュアの考え方
2019/05/03(金) 15:33:51.16ID:wCLW0/2P0
>>649
スレタイ読め
2019/05/03(金) 15:38:42.54ID:q0Uiy+aiA
どーでもええわ
2019/05/03(金) 15:58:52.41ID:Ue5NRrHW0
教えてください。
以下のコードで、x の定義は問題ないのに y の定義だけコンパイルエラーになってしまいます。

==
const Exception e = null;
const bool x = e == null; // エラーなし、true が設定される。

const Type t = null;
const bool y = t == null; // CS0133 y' に割り当てられた式は定数でなければなりません。
==

何が原因でこのような違いがでるのでしょうか。
また、y を定数のままエラーが出ないように修正することは可能でしょうか。
よろしくお願いいたします。
2019/05/03(金) 16:01:49.32ID:3MJf1YjB0
>>652
結果によってtrueやfalseになるようなんは定数と呼ばん
2019/05/03(金) 17:46:27.38ID:Xwdpydd1a
>>652
例外はTypeで==演算子が再定義されてるからみたいなので、

const bool y = t == (object)null;

一応これで文句言われないみたい
2019/05/03(金) 17:53:37.68ID:Xwdpydd1a
あ、なんか例外とか意味不明なこと書いてるけど突っ込まないでねw
2019/05/03(金) 18:53:11.77ID:78NC+NUs0
>>654
え?
それ通るの?
怖い
2019/05/03(金) 19:21:25.35ID:Xwdpydd1a
言語仕様の「定数式」の項を見れば別に不思議はないんだけど、
他人の書いたコードでこういう式を見たら一瞬「何の意図でこんな式を書いてるんだ?」
と思っちゃうね。
2019/05/03(金) 20:24:56.25ID:Ue5NRrHW0
>>653
レスありがとうございます。
定数のまま、というのは const を付けたまま、という意味のつもりだったのですが、
表現が不適切だったかもしれません。失礼いたしました。

>>654
ありがとうございます!うまくいきました。
ちなみにいろいろ試してみると、
string は == が定義されているもののエラーが出ないようです。
さすがに string は特別ということのようですね。
(ただ、typeof(string).IsPrimitive は false にだったりして
 いまいちしっくりきませんが。。。)

==
const string s = null;
const bool z = s == null; // エラーなし、true が設定される。
==

何にせよ、問題はすっきり解消いたしました。
適切なアドバイスどうもありがとうございました。
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 到達できないコードが検出されました
==
2019/05/03(金) 20:54:20.72ID:mscz+0vpa
>>659
いやいやいや、俺はおたくにケチつけたわけじゃないよw
const bool y = t == (object)null;

こういうのはぱっと見て意図が分からないと言っただけ。
むしろ「マジックナンバー」を避けるのは良い習慣ですよ
2019/05/03(金) 20:57:46.12ID:mscz+0vpa
>>658
>string は == が定義されているもののエラーが出ないようです。
上にも書いたけど、その辺のモヤモヤはC#の言語仕様の「定数式」の箇所を見れば解消するよ。
VSのインストールフォルダに入ってる
2019/05/03(金) 21:13:39.41ID:rGk2iQn5a
ひょっとして、ES6あたりの感覚で代入onlyの変数を宣言したくてconstキーワードを使おうとしてるのかなと思ってみたり
readonlyなローカル変数みたいな構文ってC#にはまだないんだよね
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 の役割自体が正確に区別できていないような
気がしてきたので、これを機会に勉強してみようと思います。
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);
}
==
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);
}
==
2019/05/03(金) 22:55:31.79ID:1vSUmwo4M
実質的に定数ならJITコンパイル時に定数に置き換わるからそんなものは要らん
2019/05/03(金) 23:53:26.41ID:BZD1sthA0
decimalの定数は内部的にアレだけどな
2019/05/04(土) 07:03:09.32ID:Y3LpLEUoM
>>667
詳しく
2019/05/04(土) 13:03:57.01ID:3sktWiiHa
>>668
横からだけど https://ufcpp.net/blog/2016/12/tipsprimitives/ のことだと思う
670デフォルトの名無しさん (ワッチョイ f72d-/hjB)
垢版 |
2019/05/04(土) 14:32:15.09ID:IHSUUilV0
List.Addって、複数のスレッドから同時に呼び出したらデータが壊れる可能性ってあるの?
2019/05/04(土) 15:00:48.03ID:NSx1pb1m0
>>670
スレッドセーフじゃないからlock制御を自前で持つか、System.Collections.Concurrentのコレクション使うべき
2019/05/04(土) 15:23:49.46ID:H40F3Pfj0
Queueの出し入れもlock必要だし、マルチスレッドはめんどいよな。
なんでConcurrentDictionaryはあるのにListは無いのか
2019/05/04(土) 15:37:29.51ID:uz0VN5nda
>>672
使い道がない
2019/05/04(土) 15:38:02.55ID:vy21Hr2ZM
個人的にはスレッド自体に特定のスレッドからのデータを受け取る処理がある方が好き
2019/05/04(土) 15:57:05.65ID:qIB0qWQDM
別々のスレッドから生成された値を集めたいなら、
各スレッドで別のバッファ(List)に値を書き込んでから最後に単一スレッドでマージするのが定番
2019/05/04(土) 17:20:59.03ID:pMssk1qR0
スレッドセーフって実はどういう動作するのかよく知らないぜ
2019/05/04(土) 17:27:01.27ID:0zm1CIpf0
>>676
わかる
エラーがでなかったらそれがスレッドセーフ!!
2019/05/04(土) 20:18:11.93ID:pMssk1qR0
APIのマニュアルにおいて「スレッドセーフ」という言葉が用いられる場合、たいていは「複数のスレッドからアクセスされても例外を出さない、プログラムがクラッシュしない」というような意味です。

しかしプログラムの目的によっては、例外が出ないだけでは不適切です。

例えば対象が、100個のデータを管理する変数だとします。
その100個のデータに対して、1つ目から順に処理するスレッドと、50個目から変更するスレッドが同時に動いたらどうなるでしょうか? 結果は不定です。
この例では、排他処理 (C#なら lock ステートメントなど) と呼ばれる処置が必要になります。

ってググって出たサイトで拾った
2019/05/04(土) 20:25:20.65ID:pMssk1qR0
つまり

for(int i=0;i<lst.count;i++)
{
unk un=lst[i];

}

みたいなプログラムを組んだとき
どっかでいきなり要素をゼロにされて死ぬってことは
スレッドセーフだろうがどうだろうが可能性はあるってことだよね

ってことを考えるとスレッドセーフである意味ってあんまりなくて
排他処理は絶対実装しないと駄目だよね?ってこと?
誰か違うと言ってくれ
2019/05/04(土) 20:59:32.71ID:Ui9BQ5TxM
スレッドセーフはメソッド内などで一貫性を保てる作り

排他制御が必要な場面でやってないなど作り手のロジックミスには対応出来るわけがない
2019/05/04(土) 21:06:21.08ID:Ui9BQ5TxM
スレッドセーフである意味

あるオブジェクトがプロパティAを持っててメソッド内で
b=aaa(A)+bbb(A);
を計算しようとしても複数のスレッドからアクセスされることを考慮されていなければ
最初のAと次のAが違う場合があり計算結果が期待したものにならないかもしれない

スレッドセーフはこういう場合でもちゃんと計算される仕組みを持つ
2019/05/04(土) 21:07:23.59ID:3sktWiiHa
>>679
その処理は要素数チェックと要素アクセスが分かれているから、間に他スレッドからの処理が割り込み得る
System.Collections.Concurrent系のコレクションは、
例えば「要素があるなら取得」のようなまとまった処理がatomicになっているので、他スレッドからの割り込まれない(=スレッドセーフ)
どっかのスレッドで詰めて、別のスレッドでループ処理、がやりたいのならBlockingCollectionが楽
2019/05/04(土) 21:27:48.58ID:qIB0qWQDM
>>679
厳密に他のスレッドとの同期を取らなきゃいけないなら>>682の言うようにBlockingCollection使うか毎回ロックだろうし、
ループ中は他のスレッドによるlstの変更を反映しなくていいならループに入る直前だけロックしてコピーしておけば済む
ケースバイケースだよ
一つ一般的なアドバイスをしておくと、並列処理のコツはデリケートな前提をなるべく設けずに極力ロバストな設計をすることだ
要件が許す限りにおいて、少々処理の順番が入れ替わったり処理間の同期が取れてなかったりしても問題にならないつくりにするのが理想
684デフォルトの名無しさん (ワッチョイ e22f-GsKc)
垢版 |
2019/05/04(土) 22:09:10.98ID:56LrGuhB0
非同期処理は複数のスレッドが同じデータを弄ろうとすることによる不整合は起きないけど
コールスタックは複数になるから
同じデータに触ると訳ワカメになる事があった
2019/05/04(土) 23:16:04.81ID:pMssk1qR0
(||゚Д゚)ヒィィィ!(゚Д゚||)
じゃあ>>679みてーな処理を書いたら
スレッドセーフなんて関係なく
バグるんだね
こぇえええええ
じゃなくて終わったわ
今まで組んだもんでテキトーにやった箇所全部終わってる気がする
2019/05/04(土) 23:28:33.99ID:J15hVQV0a
まあ複数スレッドで同時並行処理するときにはそのへん慎重を期さないと
再現困難なバグを埋め込んじゃうからねえ
同時に読み書きする可能性のある変数を安易に書き換え/差し替えしちゃダメ
2019/05/05(日) 05:07:07.08ID:tvdtPjB+0
マルチスレッドの恐ろしさは、たまにしかバグらない事。
ほとんどは正常に動くから、質が悪い。
必ず、バグらないだろ

それで喧嘩になる事も多い。
マルチスレッドは、ベテランでもバグるからやめろと言っても、
ほら、バグらないでしょ? と、突っかかってくる

その時には、バグらないと言うと、
千回実行しても、バグらないでしょ? と、突っかかってくる。
でも、その時にはバグらない

バグる立証をするのが難しい

だから、Ruby をやった人は、関数型言語のElixir をやる。
他の言語の人は、何を言っても、そのテスト回数でバグらないと言ってくるから、質が悪い

1万回実行しても、10万回実行しても、その時にはバグらないものなんだよ。
何回バグらないで実行すれば、正しいと認めるのか、と問われても困る
2019/05/05(日) 06:10:17.07ID:BzgWdCy40
アクマノショウメイ
2019/05/05(日) 08:46:40.02ID:TKrOuc6uM
>>687
喧嘩になるのはマルチスレッドのバグのせいではなくお前の頭がバグってるから
2019/05/05(日) 08:57:36.80ID:Vqy33e5r0
エビデンスとれてりゃ突きつけるだけなのに
2019/05/05(日) 10:34:54.98ID:RPhfdkos0
>>687
マルチスレッドはバグるからやめろってなるのでなく、バグが無いように作れよ。

あと、お前の意見を相手が聞き入れず喧嘩になるのは、お前がいつもバカなことを言うから相手は当然受け入れる気にならず、お前にはその自覚がなくて「何でアイツは僕の言うことを理解してかれないんだウワアーーー」ってなってるからだぞ。
2019/05/05(日) 10:45:50.32ID:bYgaGqRgM
>>687
なんでバグが起こってるのか原因特定出来てなくてワロタ
2019/05/05(日) 10:48:34.16ID:uudMW5nw0
スレッドセーフは単発のメソッドが競合しないだけで
一連の処理についての動作保証をするものではないと

マルチスレッドはやらなくていいならそれに越したことはないけど
絶対に駄目というわけではなく

排他処理を組まないことが害悪
2019/05/05(日) 11:21:06.67ID:IBoHsNppa
排他制御をしなくても安全に並列処理できるように設計することが大事
まずはロック、クリティカルセクション、ミューテックス、セマフォ、といった待ち時間を発生させるタイプの機能を使ったら負け、というルールで設計に挑戦してみるといい
大半の並列処理でそんなものは必要ないこと、それらを使わないほうが圧倒的に設計とプログラムが綺麗になることを体験するべき
2019/05/05(日) 11:29:03.77ID:Q2loWuJOM
シネ
696デフォルトの名無しさん (アウアウクー MM9f-GsKc)
垢版 |
2019/05/05(日) 12:22:10.03ID:6g/cxz/+M
ぱられるふぉーってのを使えば良いんじゃね?
知らんけど
2019/05/05(日) 12:32:51.31ID:uudMW5nw0
>>694
うーん、でも>>679みたいなこと
やった時点で終わりってまともじゃねぇよ
コードで一瞬でもすきを見せたら終了みたいになっちゃうじゃん

お前の理想はなんかあるんだろうけど
他人が叫ぶスレッドセーフに頼っちゃ駄目だよ
アプリの仕様として排他処理を盛り込むべき
2019/05/05(日) 13:01:26.26ID:EeTrV1LT0
>>697
だからさ、>>679みたいなforループ自体をスレッドセーフにする一番簡易な表記方法がlockなんだよ
これ以上簡単に書くことはライブラリをどんだけ上手く作っても無理
2019/05/05(日) 13:15:03.75ID:l159r3xkM
>>698
それって記述が簡単ってだけでしょ?
ロック中にアクセスしたらどういう動作するの?
次回に回すの?
待機して待つの?
そういうのってスレッド毎にステータスを持たせて
マトリックスで管理しないと制御できてると俺は認めない

ジジイだから
700デフォルトの名無しさん (ワッチョイ f72d-/hjB)
垢版 |
2019/05/05(日) 13:34:55.82ID:1Pm7tIcB0
VisualBasic大先生を怒らせてしまったようだな
2019/05/05(日) 13:41:27.68ID:IBoHsNppa
>>698
だからさ
そんな不安定なロジックを書かなくても良いようにちゃんと設計するのが並列処理の王道なんだよ
lockブロックは最初の一回を書くときは楽かもしれんがだんだん難しくなるぞ
そのコレクションを使う全てのプログラマが並列性を意識して正確に排他制御をコーディングしなければならない
これは実用的なシステムの規模になるとかなり大きな負担になる
2019/05/05(日) 14:02:39.93ID:IBoHsNppa
そもそもロックって論外なんだわ

世の中の並列処理の目的ってのはほぼ2種類に分類されるんだよ
@インフラストラクチャ処理中にCPUを待たせたくない
A消費コア数を増やして暇なCPUを働かせたい

よーするにCPUを無駄にしたくないわけ
でもロックしちゃうと問答無用でCPUが何もせずに止まっちゃう
ロックすると並列処理をする目的そのものに反してしまう
なのでロックは基本使わず最後の手段ってわけ

この辺りは(やや古い本だが)Microsoft Pressのプログラミング.NET Franework第4版やEffectiveシリーズでも解説されてることだね
どちらも良書なので脱初心者を目指しているだろう君達は是非とも読むべきだ
2019/05/05(日) 14:08:00.64ID:kZz1htUnM
その通り
極端な話、並列処理なんてそれぞれ別のサーバーで実行させりゃいいんだよ
それがレイテンシやコストなどの問題で無理なら代わりにプロセスを分ければいい
そもダメならリクエストやワーカー単位でスレッドを分け、といった具合に、共有するリソースを最小限にすることを優先する
2019/05/05(日) 17:40:50.25ID:Q2loWuJOM
ジジイだから能力低いだけだろ
705デフォルトの名無しさん (ワッチョイ f72d-/hjB)
垢版 |
2019/05/05(日) 18:00:00.04ID:1Pm7tIcB0
非同期処理全盛の時代にこれじゃ、世の中やばいコード(or非同期処理のつもりが同期処理されてるコード)だらけだろうな
Qiitaとか見ててもやばい奴だらけだ
2019/05/05(日) 18:04:40.39ID:IBoHsNppa
>>705
今時lockだもんな、笑えない深刻さ
お前のコード、めちゃくちゃブロックされてんだけど、って同僚の誰かが教えてやればいいのに見て見ぬ振りは可哀想だ
707デフォルトの名無しさん (ワッチョイ f72d-/hjB)
垢版 |
2019/05/05(日) 18:09:44.07ID:1Pm7tIcB0
そもそも、世のサンプルプログラムの多くが欠陥品なのが諸悪の根幹なのかもな
劣化コピーしちゃうQiita屋とかコピペプログラマが全部危険なコードを書いてしまう
2019/05/05(日) 18:19:48.84ID:Q2loWuJOM
一番パフォーマンスの良いMutexを使ってる人がどれだけいるやら
2019/05/05(日) 18:23:53.97ID:IBoHsNppa
>>708
よくねえよw
OSリソース消費する処理に速度を期待するな
2019/05/05(日) 18:27:02.59ID:Q2loWuJOM
他人に迷惑をかける基地外はシネ
2019/05/05(日) 18:33:04.85ID:Q2loWuJOM
webサーバでスレッド一個で処理を完結するようにはなっていないだろ
2019/05/05(日) 18:33:17.95ID:IBoHsNppa
Mutexは相変わらずスレッドをブロックするうえにMonitorよりも消費リソースが大きい
その代わりプロセスを超えて待機処理を実装できるというものだ
よーするにlockよりもっと遅いんだよ
2019/05/05(日) 18:34:49.31ID:Q2loWuJOM
>>712
実務で使ったことないんだろ
黙っとけや

自分だけの小さなアプリしか作ったことないんだろ
2019/05/05(日) 18:37:30.50ID:IBoHsNppa
>>713
もう無理だよ笑わせないでw
もっともパフォーマンスの良いミューテックスwwwwwww
実務で使ったことないだろwww
学生さんですかwwww
2019/05/05(日) 18:38:33.24ID:Q2loWuJOM
5分で確認できることをできない老害
716デフォルトの名無しさん (ワッチョイ f72d-/hjB)
垢版 |
2019/05/05(日) 18:41:05.51ID:1Pm7tIcB0
Mutexはロックがいらないスレッド同士でもロックしちゃうのが使いづらいな
回避できるのかはしらんが
2019/05/05(日) 18:41:10.65ID:Q2loWuJOM
そもそもスレッドがとまると言ってるけどCPUのスレッドと.netのスレッド混同してそう
2019/05/05(日) 18:41:50.97ID:Q2loWuJOM
> でもロックしちゃうと問答無用でCPUが何もせずに止まっちゃう

これ笑う所?
2019/05/05(日) 18:45:15.15ID:Q2loWuJOM
ロックしちゃうと問答無用でCPUが何もせずに止まっちゃうわけないだろw
2019/05/05(日) 18:47:01.12ID:uudMW5nw0
え?lock中にアクセスしようとしたらどうなるの?
721デフォルトの名無しさん (ワッチョイ f72d-/hjB)
垢版 |
2019/05/05(日) 18:48:17.37ID:1Pm7tIcB0
ロックが取得できないだけ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況