■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part92
http://echo.2ch.net/test/read.cgi/tech/1485589613/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C#, C♯, C#相談室 Part93©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 1e06-m8Mb)
2017/04/22(土) 08:52:00.93ID:iVvswOrb02デフォルトの名無しさん (ワッチョイ de35-HDOw)
2017/04/22(土) 10:57:42.55ID:g8ZT1khs0 ■過去スレ
C#, C♯, C#相談室 Part89
http://peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
C#, C♯, C#相談室 Part91 (実質Part92)
http://echo.2ch.net/test/read.cgi/tech/1467211515/
C#, C♯, C#相談室 Part92 (実質Part93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/
>>1
ここは、実質Part94
C#, C♯, C#相談室 Part89
http://peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
C#, C♯, C#相談室 Part91 (実質Part92)
http://echo.2ch.net/test/read.cgi/tech/1467211515/
C#, C♯, C#相談室 Part92 (実質Part93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/
>>1
ここは、実質Part94
3デフォルトの名無しさん (ワッチョイ 1e06-m8Mb)
2017/04/22(土) 13:39:44.03ID:iVvswOrb0 ■関連スレ
初心者の質問向けはこちら
ふらっと C#,C♯,C#(初心者用) Part127
http://echo.2ch.net/test/read.cgi/tech/1489498042/
>>2
補足thx。見逃していた
初心者の質問向けはこちら
ふらっと C#,C♯,C#(初心者用) Part127
http://echo.2ch.net/test/read.cgi/tech/1489498042/
>>2
補足thx。見逃していた
4デフォルトの名無しさん (ワッチョイ 7ff7-/JtG)
2017/04/22(土) 14:55:56.60ID:c4VI05+R0 おつかれ
キチガイの人(山口人生)は、複数回線もっていそうだからどこまで効果するかは分からんけれど
何もしないよりマシだね、今後もワッチョイ有りで行こう。
死ねばいいのに・・・・
キチガイの人(山口人生)は、複数回線もっていそうだからどこまで効果するかは分からんけれど
何もしないよりマシだね、今後もワッチョイ有りで行こう。
死ねばいいのに・・・・
5デフォルトの名無しさん (アウアウイー Sa63-wX6N)
2017/04/22(土) 15:23:39.94ID:FEVU7Q4Da 誰だよ山口人生ってww
6デフォルトの名無しさん (エムゾネ FFaa-TkTn)
2017/04/22(土) 15:39:01.94ID:S+KK7a41F7デフォルトの名無しさん (ワッチョイ 7ff7-/JtG)
2017/04/22(土) 16:06:32.09ID:c4VI05+R0 >>5
ググッてみてば分かるw
東大出でイリノイ大学で不完全性定理で有名なゲーデルの弟子として著名な
竹内外史先生の弟子になってPh.Dを取るも、神奈川大学で万年講師、研究室の壁を蹴って騒音出していたらクビになってしまったヤツwww
経歴だけ見るとスーパーエリートwwww
学歴荒らしがあるところに山口人生あり、酷い学歴厨の60台後半じぃさん
実家はお金持ち、もう親は鬼籍かな?ビル持っていて資産が一億切っているとか、絶対ヤバそうw
P=NPを主張しているが誰にも相手にされず、学会では芸人扱いw
ググッてみてば分かるw
東大出でイリノイ大学で不完全性定理で有名なゲーデルの弟子として著名な
竹内外史先生の弟子になってPh.Dを取るも、神奈川大学で万年講師、研究室の壁を蹴って騒音出していたらクビになってしまったヤツwww
経歴だけ見るとスーパーエリートwwww
学歴荒らしがあるところに山口人生あり、酷い学歴厨の60台後半じぃさん
実家はお金持ち、もう親は鬼籍かな?ビル持っていて資産が一億切っているとか、絶対ヤバそうw
P=NPを主張しているが誰にも相手にされず、学会では芸人扱いw
8デフォルトの名無しさん (アウアウイー Sa63-wX6N)
2017/04/22(土) 17:40:53.42ID:L9cy9Aq3a 統失くんいらっしゃい、ってかw
9デフォルトの名無しさん (ワッチョイ 7ff7-/JtG)
2017/04/22(土) 17:57:12.00ID:c4VI05+R0 敬意が足らないですね、糖質超教授と読んであげましょうwww
いらっしゃらなくていいです、迷惑なので死んでください
いらっしゃらなくていいです、迷惑なので死んでください
10デフォルトの名無しさん (ワッチョイ bb4c-VP69)
2017/04/22(土) 19:18:48.92ID:7MQLYtSw0 本当のその山口ってのなのか?
11デフォルトの名無しさん (ワッチョイ 7ff7-/JtG)
2017/04/22(土) 19:41:05.45ID:c4VI05+R0 張り付き方が異常、現役じゃ不可能
発言が山口人生と似ているし話が高齢者臭い、中年ですらない
Delphiを使っていて最近C#に移ってきている
ここまでのマジキチには普通日常で出会うことは無い、希少種
そんなヤツがこの日本に何人もいてたまるかwwww
発言が山口人生と似ているし話が高齢者臭い、中年ですらない
Delphiを使っていて最近C#に移ってきている
ここまでのマジキチには普通日常で出会うことは無い、希少種
そんなヤツがこの日本に何人もいてたまるかwwww
12デフォルトの名無しさん (ワッチョイ bb4c-VP69)
2017/04/22(土) 20:05:29.05ID:7MQLYtSw0 このスレ、自分以外は全部同じ人が書き込んでたりしてw
ちょっとしたホラーだな
ちょっとしたホラーだな
13デフォルトの名無しさん (ドコグロ MM33-MUXz)
2017/04/22(土) 20:49:00.38ID:IUEn1/EeM なんかワッチョイ付いてると気に入らないみたいよ
俺は付いてるほうが好きだからこっちのスレのがいいな
俺は付いてるほうが好きだからこっちのスレのがいいな
14デフォルトの名無しさん (ベーイモ MM7f-4iqD)
2017/05/03(水) 17:15:57.72ID:crwmH6BQM こっち使おうぜ
15デフォルトの名無しさん (ワッチョイ 93f7-6g+b)
2017/05/05(金) 16:32:19.84ID:bVbNjYk40 今日発見した衝撃の事実
なぜWindowsUpdateの時ファイルがぶっ壊れるのかというのがずっと謎だった
Application.ThreadExit イベントで書き出しスレッドの終了処理していたのだが
手動のシャットダウンだと問題なく呼ばれるのに、リブートするとThreadExitが呼ばれない
それどころか、フォアグラウンドで作成していたスレッドが強制終了させられている上
System.Threading.ThreadAbortExceptionmもSystem.Threading.ThreadInterruptedExceptionも送出されないまま
突然中断で終了しやがってた・・・
ひでぇ終了の仕方だ・・・
なんでリブートに限りこんなシーケンスで強制終了しやがるんだ、この糞が・・・
なぜWindowsUpdateの時ファイルがぶっ壊れるのかというのがずっと謎だった
Application.ThreadExit イベントで書き出しスレッドの終了処理していたのだが
手動のシャットダウンだと問題なく呼ばれるのに、リブートするとThreadExitが呼ばれない
それどころか、フォアグラウンドで作成していたスレッドが強制終了させられている上
System.Threading.ThreadAbortExceptionmもSystem.Threading.ThreadInterruptedExceptionも送出されないまま
突然中断で終了しやがってた・・・
ひでぇ終了の仕方だ・・・
なんでリブートに限りこんなシーケンスで強制終了しやがるんだ、この糞が・・・
16デフォルトの名無しさん (ワッチョイ 761f-ExUK)
2017/05/05(金) 16:49:33.38ID:tHPUBlll0 セキュリティ的にアプデは大事だからね
多少強引な手段で終了してもいいよね仕方ないね
多少強引な手段で終了してもいいよね仕方ないね
17デフォルトの名無しさん (ワッチョイ e2d4-Ogwz)
2017/05/05(金) 17:01:44.90ID:3XrDrf840 シャットダウンと再起動で違うのか
18デフォルトの名無しさん (ワッチョイ 124f-hLQG)
2017/05/05(金) 17:10:34.10ID:pBlqXMv00 もっと詳しく知りたい。
SessionEndingイベントとかで捕まれないんか?
それ
SessionEndingイベントとかで捕まれないんか?
それ
19デフォルトの名無しさん (ワッチョイ 93f7-6g+b)
2017/05/05(金) 17:16:16.69ID:bVbNjYk4020デフォルトの名無しさん (ワッチョイ 93f7-6g+b)
2017/05/05(金) 17:17:13.60ID:bVbNjYk4021デフォルトの名無しさん (ワッチョイ 124f-hLQG)
2017/05/05(金) 18:09:02.57ID:pBlqXMv00 >>20
おおう、そうなんか。
おおう、そうなんか。
22デフォルトの名無しさん (アウアウイー Sa37-wexB)
2017/05/05(金) 18:13:33.93ID:A3oUashQa23デフォルトの名無しさん (アウアウイー Sa37-wexB)
2017/05/05(金) 18:24:50.53ID:A3oUashQa24デフォルトの名無しさん (ワッチョイ 323c-10U+)
2017/05/05(金) 18:43:02.46ID:PzvORh1V0 >>22
EWX_FORCEとかEWX_FORCEIFHUNGを指定してるんでしょ
https://msdn.microsoft.com/ja-jp/library/cc429713.aspx
セキュリティアップデートは確実にリブートする必要あるから多少の犠牲はやむを得ない
って思ってるんじゃね?
EWX_FORCEとかEWX_FORCEIFHUNGを指定してるんでしょ
https://msdn.microsoft.com/ja-jp/library/cc429713.aspx
セキュリティアップデートは確実にリブートする必要あるから多少の犠牲はやむを得ない
って思ってるんじゃね?
25デフォルトの名無しさん (ワッチョイ 72ac-W+y+)
2017/05/05(金) 19:11:23.54ID:FiATWWo80 客側でこれを指定されたらたまらないなー
26デフォルトの名無しさん (ワッチョイ df6c-hLQG)
2017/05/05(金) 19:58:14.99ID:ueXs9gXt0 ExitWindowExの英文説明では、DWORD dwReservedのとこがdwReasonになってんね。
このへんかな
このへんかな
27あ (スフッ Sd52-gZQE)
2017/05/05(金) 20:10:07.89ID:05XvGSted プロセスの終了確認はあるだろうか、その結果タイムアウトした時のスレッドの落とし方はものすごい強引だった気がする。
昔shutdown -s -t 01で落として確認した事ある。
昔shutdown -s -t 01で落として確認した事ある。
28デフォルトの名無しさん (ワッチョイ 7606-7zcB)
2017/05/05(金) 20:14:25.56ID:3cKL/0El0 OSの仕様なのか.NET独特の挙動なのか>>23みたいな話なのかはっきりしないな
.NET独特の挙動だったら業務でアプリ作っている人は死活問題じゃね
.NET独特の挙動だったら業務でアプリ作っている人は死活問題じゃね
29デフォルトの名無しさん (ワッチョイ 323c-10U+)
2017/05/05(金) 20:27:56.88ID:PzvORh1V030デフォルトの名無しさん (アウアウイー Sa37-wexB)
2017/05/05(金) 20:30:18.07ID:A3oUashQa いやいやデフォではプロセス強制終了なんてないよ絶対w
Winduws Updateはデフォでは自動になってるんだから、Windows Updateが走るたびに
そんな無茶苦茶やってたら世界中で大騒ぎになってるってw
XPの時代はそんな経験したような記憶もあるけど
少なくともVista以降はないと思うよ
Winduws Updateはデフォでは自動になってるんだから、Windows Updateが走るたびに
そんな無茶苦茶やってたら世界中で大騒ぎになってるってw
XPの時代はそんな経験したような記憶もあるけど
少なくともVista以降はないと思うよ
31デフォルトの名無しさん (ワッチョイ 7606-7zcB)
2017/05/05(金) 20:34:57.11ID:3cKL/0El0 俺は趣味でやっているだけだしアップデートも任意のタイミングでしかやらないからどうでもいいが
VSの有料ライセンス買っている人がいて心配だったら直にMSに聞いた方がいいな
VSの有料ライセンス買っている人がいて心配だったら直にMSに聞いた方がいいな
32あ (スフッ Sd52-gZQE)
2017/05/05(金) 20:48:13.06ID:05XvGSted33デフォルトの名無しさん (ワッチョイ df6c-hLQG)
2017/05/05(金) 22:27:29.53ID:ueXs9gXt034デフォルトの名無しさん (ワッチョイ 93f7-6g+b)
2017/05/06(土) 07:24:56.49ID:KTPtsEWO035デフォルトの名無しさん (ワッチョイ 27d4-YAN7)
2017/05/06(土) 07:54:55.96ID:rojhZA3i0 適度にトラブル起こしてあげないと窓際族の情シスの仕事がなくなっちゃうからね
36デフォルトの名無しさん (ワッチョイ 124f-hLQG)
2017/05/06(土) 08:25:02.90ID:2V5tVO5D037あ (スフッ Sd52-gZQE)
2017/05/06(土) 08:57:56.21ID:BE072L/9d >>36
UIスレッドでメッセージボックス出しとくと、プロセスを落とす正規ルートからはずれて再現できるとか、なんか色々こねくり回したよ。
今だと仮想マシンあるから、マシンが上がってくるの待つ辛さ無いかもね。
UIスレッドでメッセージボックス出しとくと、プロセスを落とす正規ルートからはずれて再現できるとか、なんか色々こねくり回したよ。
今だと仮想マシンあるから、マシンが上がってくるの待つ辛さ無いかもね。
38デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 06:03:37.70ID:OZ9w4Yf70 ロック処理についてちょっと相談です
●二つ以上のオブジェクトを同時にロックしたい
片側づつ順を追ってロックしていくのはダメ、デッドロックするので。
ロック出来ない状態である限り、ロックは限りなくしないようにしたい。
ロックに失敗までのタイムアウト処理もしたい。
●例えばこれだと、デッドロックを引き起こすので良くない
lock(obj1) lock(obj2) 処理;
●そこで、言語に以下のような構文があれば理想的なのだが
ないので、それらしいヘルパを作りたい、できれば効率的な物。
lock(obj1,obj2, ... ,timeout=1000) {
ロック成功の場合の処理
}
timeout {
タイムアウトした場合の処理
}
●二つ以上のオブジェクトを同時にロックしたい
片側づつ順を追ってロックしていくのはダメ、デッドロックするので。
ロック出来ない状態である限り、ロックは限りなくしないようにしたい。
ロックに失敗までのタイムアウト処理もしたい。
●例えばこれだと、デッドロックを引き起こすので良くない
lock(obj1) lock(obj2) 処理;
●そこで、言語に以下のような構文があれば理想的なのだが
ないので、それらしいヘルパを作りたい、できれば効率的な物。
lock(obj1,obj2, ... ,timeout=1000) {
ロック成功の場合の処理
}
timeout {
タイムアウトした場合の処理
}
39デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 06:03:54.24ID:OZ9w4Yf70 ●とりあえず簡単に考えた、しかし無駄が多そうに見える、もっと良いものが欲しい。
DateTime begin = DateTime.Now;
再試行:
bool l1 = Monitor.TryEnter(obj1, 0);
bool l2 = Monitor.TryEnter(obj2, 0);
if (l1 && l2) {
goto ロック成功;
} else {
if(l1) Monitor.Exit(obj1); // チェックと共にロックしてしまうので、このコードも残念賞
if(l2) Monitor.Exit(obj2); // 同上
if ((DateTime.Now - begin).TotalMilliseconds > 1000) {
goto タイムアウト;
} else {
System.Threading.Thread.Sleep(10); // この待ち方も酷い
goto 再試行;
}
}
タイムアウト:
{
タイムアウト処理
}
ロック成功:
DateTime begin = DateTime.Now;
再試行:
bool l1 = Monitor.TryEnter(obj1, 0);
bool l2 = Monitor.TryEnter(obj2, 0);
if (l1 && l2) {
goto ロック成功;
} else {
if(l1) Monitor.Exit(obj1); // チェックと共にロックしてしまうので、このコードも残念賞
if(l2) Monitor.Exit(obj2); // 同上
if ((DateTime.Now - begin).TotalMilliseconds > 1000) {
goto タイムアウト;
} else {
System.Threading.Thread.Sleep(10); // この待ち方も酷い
goto 再試行;
}
}
タイムアウト:
{
タイムアウト処理
}
ロック成功:
40デフォルトの名無しさん (ワッチョイ 2b75-Muxa)
2017/05/25(木) 07:25:50.25ID:zdaQwC0X0 ていうか普通にロック専用のオブジェクト作ってそれをロックすりゃいいんじゃねーの
41デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 07:32:55.17ID:OZ9w4Yf70 >>40
それだとロック粒度が大きくなりすぎて逆にデッドロックの可能性を拡大してしまいますね。
それだとロック粒度が大きくなりすぎて逆にデッドロックの可能性を拡大してしまいますね。
42デフォルトの名無しさん (ワッチョイ 9f7d-yauO)
2017/05/25(木) 07:34:38.83ID:ZdIAUNK00 セマフォ使ったらどう?
資源数もタイムアウトもあるし
資源数もタイムアウトもあるし
43デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 07:36:13.98ID:OZ9w4Yf7044デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 07:50:05.84ID:OZ9w4Yf70 >http://article.higlabo.com/ja/thread_locking.html
lock(Monitor.Enter/Monitor.Exit) 同じプロセス 20ns
Mutex 違うプロセスも可能 1000ns
SemaphoreSlim 同じプロセス 200ns
Semaphore 違うプロセスも可能 1000ns
ReaderWriterLockSlim 同じプロセス 40ns
ReaderWriterLock 同じプロセス 100ns
Semaphoreは高機能すぎて、あまり軽々しくは使えない。
そのわりにはlockと違ってスレッドチェックがないので自家中毒を起こしたりするので、別途そのための対処が必要になったりする。
lock 20nsはやはり捨てがたいものです。
lock(Monitor.Enter/Monitor.Exit) 同じプロセス 20ns
Mutex 違うプロセスも可能 1000ns
SemaphoreSlim 同じプロセス 200ns
Semaphore 違うプロセスも可能 1000ns
ReaderWriterLockSlim 同じプロセス 40ns
ReaderWriterLock 同じプロセス 100ns
Semaphoreは高機能すぎて、あまり軽々しくは使えない。
そのわりにはlockと違ってスレッドチェックがないので自家中毒を起こしたりするので、別途そのための対処が必要になったりする。
lock 20nsはやはり捨てがたいものです。
45デフォルトの名無しさん (ワッチョイ 4bcd-TmZs)
2017/05/25(木) 08:14:43.50ID:CNpknsWj0 見も蓋もないが、設計が間違ってる気がする。
46デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 08:20:40.14ID:OZ9w4Yf70 >>45
そんな事は無いと思うんだけどな、セマフォに標準で実装されているように
これはマルチスレッドデザインパターンとしては基本になるかと。
というか教科書にある典型ですし。
ところが、Monitorにはなかったので、おや何故ない?となっている所。
せっかく高性能なのに有効活用できないのは勿体ないと。
そんな事は無いと思うんだけどな、セマフォに標準で実装されているように
これはマルチスレッドデザインパターンとしては基本になるかと。
というか教科書にある典型ですし。
ところが、Monitorにはなかったので、おや何故ない?となっている所。
せっかく高性能なのに有効活用できないのは勿体ないと。
47デフォルトの名無しさん (スプッッ Sd0f-UmYi)
2017/05/25(木) 08:30:18.43ID:a8axhl9cd >>46
そもそもなぜロックが必要なの?
そもそもなぜロックが必要なの?
48デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 08:34:06.74ID:OZ9w4Yf7049デフォルトの名無しさん (ワッチョイ 4bcd-yumd)
2017/05/25(木) 08:52:37.16ID:CNpknsWj0 >>39
みたいなことをするぐらいならSpinLockを使った自前実装で処理したほうが良いかもしれない。
もしくは
>>lock(obj1) lock(obj2) 処理;
これでもデッドロックしないように、Lockする順番を厳格にしてコーディングするとか
というか、言葉遣いに気を付けたほうが良いと思うよ。
みたいなことをするぐらいならSpinLockを使った自前実装で処理したほうが良いかもしれない。
もしくは
>>lock(obj1) lock(obj2) 処理;
これでもデッドロックしないように、Lockする順番を厳格にしてコーディングするとか
というか、言葉遣いに気を付けたほうが良いと思うよ。
50デフォルトの名無しさん (ワッチョイ 2bd4-WXs4)
2017/05/25(木) 08:54:51.29ID:foQMlEN20 そんなにパフォーマンスが大事ならオプティミスティックロックも検討したら?
どうせ滅多に競合なんかしないでしょ
どうせ滅多に競合なんかしないでしょ
51デフォルトの名無しさん (スプッッ Sd0f-UmYi)
2017/05/25(木) 09:01:40.08ID:a8axhl9cd52デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 09:04:40.54ID:OZ9w4Yf70 >>49
ここにいる知らなくてもレスしないと死ぬ病気にかかっている奴はどうしょうもない。初心者の上にキチガイなら死ねって感じですが。
とりあえず、スピンロックは使いたくないですね、あれはCPUタイムをすり潰しながら高速動作を確保しようとするものだから
それの主用途は、激重計算タスクを並列処理するための物であって、目的とちょっと違いますね。
あと、排他処理をちゃんと勉強すると、順序等を考えていても意味が無くて
ロックする瞬間に作業に必要になるリソースをすべて確保して、必ず抜けられるという事の方がデッドロックに対する対処としては有用です。
でも、上に書かれているように一つのオブジェクトで粒度を上げてしまったら本末転倒になります。
ここにいる知らなくてもレスしないと死ぬ病気にかかっている奴はどうしょうもない。初心者の上にキチガイなら死ねって感じですが。
とりあえず、スピンロックは使いたくないですね、あれはCPUタイムをすり潰しながら高速動作を確保しようとするものだから
それの主用途は、激重計算タスクを並列処理するための物であって、目的とちょっと違いますね。
あと、排他処理をちゃんと勉強すると、順序等を考えていても意味が無くて
ロックする瞬間に作業に必要になるリソースをすべて確保して、必ず抜けられるという事の方がデッドロックに対する対処としては有用です。
でも、上に書かれているように一つのオブジェクトで粒度を上げてしまったら本末転倒になります。
53デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 09:05:42.97ID:OZ9w4Yf70 >>51
ちゃんとわかっている人を待っているんだから黙ってろ
ちゃんとわかっている人を待っているんだから黙ってろ
54デフォルトの名無しさん (ワッチョイ 2bd4-WXs4)
2017/05/25(木) 09:12:36.71ID:foQMlEN20 アイデアを募るならもっと広い視野で考えたほうがいいってことでしょ
矮小な問題に限定されすぎていて、マイクロベンチマークレベルの不毛な議論にしかならない
状況によっては工夫すればロックフリーな実装もできるかもしれないよ
矮小な問題に限定されすぎていて、マイクロベンチマークレベルの不毛な議論にしかならない
状況によっては工夫すればロックフリーな実装もできるかもしれないよ
55デフォルトの名無しさん (アウアウウー Sacf-6u7H)
2017/05/25(木) 09:21:45.74ID:CcaoVCJwa うわあ。これは無視すべき奴だw
56デフォルトの名無しさん (ワッチョイ 4bcd-yumd)
2017/05/25(木) 09:24:19.81ID:CNpknsWj0 >>52
https://www.jpcert.or.jp/java-rules/lck07-j.html
ソースはそれっぽいものを適当に引っ張ってきた
ロックする順序は意味あると思うんだけど、、、
デッドロックが怖いってことだと思うんだけどさ
親から子へ順番守ってロックすればデッドロックしないじゃん?
https://www.jpcert.or.jp/java-rules/lck07-j.html
ソースはそれっぽいものを適当に引っ張ってきた
ロックする順序は意味あると思うんだけど、、、
デッドロックが怖いってことだと思うんだけどさ
親から子へ順番守ってロックすればデッドロックしないじゃん?
57デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 09:24:47.08ID:OZ9w4Yf70 >>55
世の中上には上の奴がいるんだよ、俺なんかよりはるかに知識を持っている奴はいくらでも。
お前より俺の方が知識あるが、そんな俺よりもはるかに凄いやつは山のようにいるんだ。
そろそろ、中二病みたいな全能感は捨てな
世の中上には上の奴がいるんだよ、俺なんかよりはるかに知識を持っている奴はいくらでも。
お前より俺の方が知識あるが、そんな俺よりもはるかに凄いやつは山のようにいるんだ。
そろそろ、中二病みたいな全能感は捨てな
58デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 09:32:43.15ID:OZ9w4Yf70 >>56
親子関係があれば、親についている操作ようのメソッドにロック処理をいれれば問題ないですね。
でも、今回のは完全に独立しているオブジェクト間です。
ちょっと難しいですね。
実際問題としては、順序を使う側にすべて守らせるというのは、理屈では語れても実践的ではないかもしれません。
やはり、ロック時間を短くする事が肝要であり、その為には粒度を小さくするのが基本となるかと。
汎用的なやり方としては、この方法がもっとも優れていると思います。
なので、この方法をより高パフォーマンスで実現できるヘルパーを実装して纏めて利用したい訳です。
だから、別の方法は考えていないです。Monitorを使った高速排他処理が今回の最終目標です。
親子関係があれば、親についている操作ようのメソッドにロック処理をいれれば問題ないですね。
でも、今回のは完全に独立しているオブジェクト間です。
ちょっと難しいですね。
実際問題としては、順序を使う側にすべて守らせるというのは、理屈では語れても実践的ではないかもしれません。
やはり、ロック時間を短くする事が肝要であり、その為には粒度を小さくするのが基本となるかと。
汎用的なやり方としては、この方法がもっとも優れていると思います。
なので、この方法をより高パフォーマンスで実現できるヘルパーを実装して纏めて利用したい訳です。
だから、別の方法は考えていないです。Monitorを使った高速排他処理が今回の最終目標です。
59デフォルトの名無しさん (ワッチョイ 0f75-jnQe)
2017/05/25(木) 11:13:36.68ID:5itOJ4P90 楽観的ロックのタイムアウトで、ロールバックするのが確実
人間には絶対にミス・バグがあるから、
デッドロックを100%、起こさないようにする事は、絶対に出来ないから
人間には絶対にミス・バグがあるから、
デッドロックを100%、起こさないようにする事は、絶対に出来ないから
60デフォルトの名無しさん (ブーイモ MM4f-0Wf4)
2017/05/25(木) 11:20:25.49ID:ts6Ek6dYM これ触っちゃいけないやつじゃん・・・
61デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 11:39:35.31ID:OZ9w4Yf70 >>59-60
だから、もう来るなって、お前には何も聞きたいことは無いし、そんな話は聞かされたところで新たな何かには全くつながらない。
C#スレには、初心者用じゃないもう一本の匿名ゴミすれあるだろ、そっちいけよ。
分かっている人が来たときにコメントがゴミだらけになる。
だから、もう来るなって、お前には何も聞きたいことは無いし、そんな話は聞かされたところで新たな何かには全くつながらない。
C#スレには、初心者用じゃないもう一本の匿名ゴミすれあるだろ、そっちいけよ。
分かっている人が来たときにコメントがゴミだらけになる。
62デフォルトの名無しさん (アウアウイー Sa0f-UhbI)
2017/05/25(木) 12:20:12.43ID:XlAyjrlQa たぶん質問者の方が俺よりずっと詳しそうだから釈迦に説法だと思うけど、
>●例えばこれだと、デッドロックを引き起こすので良くない
>lock(obj1) lock(obj2) 処理;
これがデッドロックしうるのはこのスレッドがobj1だけをロックした状態で
別のスレッドがobj2をロックして、そのスレッドがobj1を待機してる場合だよね?
この場合このスレッドがobj1をアンロックしない限りobj2もアンロックされないからデッドロック
だから、ネストの内側のock(obj2) だけをタイムアウト付きのMonitor.TryEnterに置き換えれば
効率的かどうかはどうかはともかく、要件は満たせるんじゃいないの?
知らんけど
>●例えばこれだと、デッドロックを引き起こすので良くない
>lock(obj1) lock(obj2) 処理;
これがデッドロックしうるのはこのスレッドがobj1だけをロックした状態で
別のスレッドがobj2をロックして、そのスレッドがobj1を待機してる場合だよね?
この場合このスレッドがobj1をアンロックしない限りobj2もアンロックされないからデッドロック
だから、ネストの内側のock(obj2) だけをタイムアウト付きのMonitor.TryEnterに置き換えれば
効率的かどうかはどうかはともかく、要件は満たせるんじゃいないの?
知らんけど
63デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 12:28:42.96ID:OZ9w4Yf70 >>62
まさにその通りです、それが直下に書いた雑な例です。
このヘルパーを作りたいという訳です、見るからに美しくないので詳しい人の登場をお待ちしているという所です。
必要な全ロック取得に失敗したら即座に全て解放して、乱数時間まって次を伺う。
これはよくある教科書通りです。
まさにその通りです、それが直下に書いた雑な例です。
このヘルパーを作りたいという訳です、見るからに美しくないので詳しい人の登場をお待ちしているという所です。
必要な全ロック取得に失敗したら即座に全て解放して、乱数時間まって次を伺う。
これはよくある教科書通りです。
64デフォルトの名無しさん (スプッッ Sd0f-UmYi)
2017/05/25(木) 13:09:08.98ID:a8axhl9cd >>62
キチガイに触るなよ
キチガイに触るなよ
65デフォルトの名無しさん (ブーイモ MM4f-ATwg)
2017/05/25(木) 13:35:53.97ID:Gj1BXJi/M 基地外大暴れワロタ
66デフォルトの名無しさん (ワッチョイ 4bcd-yumd)
2017/05/25(木) 13:51:23.71ID:CNpknsWj0 http://ideone.com/GHvgKN
勢いで書いた。
勢いで書いた。
67デフォルトの名無しさん (ワッチョイ fbf7-Ksx5)
2017/05/25(木) 13:59:41.85ID:OZ9w4Yf70 >>66
いいっすね、いいっすね
Thread.Sleep(100); ← ここがもうちょっとマシな待ち方になるといいんですがw
自分はインターフェイスは、IDispose使ってロック範囲を lock で書いたような雰囲気にしてます。
タイマーは、初ロック失敗の後にスタートさせて、ロック成功(大半のケース)でロスが少ないようにしてます。
なかなか素敵な感じになってくれませんw
いいっすね、いいっすね
Thread.Sleep(100); ← ここがもうちょっとマシな待ち方になるといいんですがw
自分はインターフェイスは、IDispose使ってロック範囲を lock で書いたような雰囲気にしてます。
タイマーは、初ロック失敗の後にスタートさせて、ロック成功(大半のケース)でロスが少ないようにしてます。
なかなか素敵な感じになってくれませんw
68デフォルトの名無しさん (ワッチョイ 1f1b-6//c)
2017/07/11(火) 08:22:12.16ID:MCsEtOKi0 ↓のテンプレートとジェネリックの違い、にある
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/generics/differences-between-cpp-templates-and-csharp-generics
トップ項目にある
・C# ジェネリック クラスでは、ユーザー定義演算子は呼び出すことができますが、算術演算子を呼び出すことはできません。
"算術演算子を呼び出すことはできません"ってどーいう意味っすか?
算術演算子って+-*/のこと?
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/generics/differences-between-cpp-templates-and-csharp-generics
トップ項目にある
・C# ジェネリック クラスでは、ユーザー定義演算子は呼び出すことができますが、算術演算子を呼び出すことはできません。
"算術演算子を呼び出すことはできません"ってどーいう意味っすか?
算術演算子って+-*/のこと?
69デフォルトの名無しさん (アウアウイー Sacb-G8QH)
2017/07/11(火) 09:57:14.72ID:t4lUkhAUa 遠まわしに制約について言ってるのかな。
算術演算子が使える型のみ受け入れるような制約はできないから
自動的に算術演算子は使えないことになるわけだけど...
算術演算子が使える型のみ受け入れるような制約はできないから
自動的に算術演算子は使えないことになるわけだけど...
70デフォルトの名無しさん (ワッチョイ 5eea-bL4e)
2017/07/16(日) 01:54:50.85ID:mMdQfX5s0 楽しそうだな。w
71デフォルトの名無しさん (ワッチョイ 6a90-qWRz)
2017/07/29(土) 20:36:18.47ID:Gw88XuqA0 ジェネリックに算術演算子を使うなら、そんなに速度が要求されないんなら
(dynamic)にキャストしてからなら演算子が使える
まあこれキャッシュ付きのリフレクションだから速度は期待しないでよー
(dynamic)にキャストしてからなら演算子が使える
まあこれキャッシュ付きのリフレクションだから速度は期待しないでよー
72デフォルトの名無しさん (ワッチョイ 331b-z1u6)
2017/08/21(月) 18:56:43.94ID:LgNyTwHt0 C++ではテンプレートに焦点をあてた書籍はいくつかあるけど
C#でジェネリックに絞ったオススメ書物ってのはありますか?
C++のテンプレートテクニックのどれが使えないか?ってのは知りたい。
C#でジェネリックに絞ったオススメ書物ってのはありますか?
C++のテンプレートテクニックのどれが使えないか?ってのは知りたい。
73デフォルトの名無しさん (アウアウイー Sacd-4GJO)
2017/08/21(月) 19:55:10.65ID:KmAQXiSua C#のジェネリックって1時間で読める記事で網羅されるぐらいの内容しかないっすよ
74デフォルトの名無しさん (ワッチョイ 11aa-8gPR)
2017/08/21(月) 20:02:09.15ID:vP5jpteT0 テンプレートテクニックとか全部忘れてOK
75デフォルトの名無しさん (ワッチョイ 6171-3KK3)
2017/08/21(月) 21:10:14.69ID:qdRqCzb30 プレートテクトニクス
76デフォルトの名無しさん (ワッチョイ da1b-KdCs)
2017/08/27(日) 02:29:03.34ID:/hywh0UG0 式テンプレートジェネリックでどー書くんだよ
77デフォルトの名無しさん (アウアウウー Sa39-B8PL)
2017/10/09(月) 21:40:27.74ID:dzl0TrLma すみません。ちょっと急いでいます。
C#でクラスを宣言する際に、
class {...} とpublic class {...}
このふたつの違いが判りません。
教えてください。
C#でクラスを宣言する際に、
class {...} とpublic class {...}
このふたつの違いが判りません。
教えてください。
78デフォルトの名無しさん (ワッチョイ dad2-B8PL)
2017/10/09(月) 21:54:29.58ID:rAF1hT8M0 お願いします。同じものですか?
79デフォルトの名無しさん (ワッチョイ 75e8-LiJ6)
2017/10/09(月) 21:56:31.06ID:28tAbNEV0 アクセス修飾子を省略したクラスは internal になる
public とか internal とかの意味については↓
アクセス修飾子 (C# プログラミング ガイド) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers
public とか internal とかの意味については↓
アクセス修飾子 (C# プログラミング ガイド) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers
80デフォルトの名無しさん (ワッチョイ 469f-N4fM)
2017/10/09(月) 21:56:50.83ID:u67WqECL0 >>77
外部から見えるか見えないか
外部から見えるか見えないか
81デフォルトの名無しさん (ワッチョイ dad2-B8PL)
2017/10/09(月) 22:03:58.01ID:rAF1hT8M0 ありがとうごぜます。
internalですね。アセンブリ言語レベルの話のようなので
まだそこまで至ってないのでpublic, private, protectedだけ使います。
すみませんでした。
internalですね。アセンブリ言語レベルの話のようなので
まだそこまで至ってないのでpublic, private, protectedだけ使います。
すみませんでした。
82デフォルトの名無しさん (ワッチョイ 769a-XSap)
2017/10/09(月) 22:12:08.58ID:Y4203ffV0 「アセンブリ」ってみて「アセンブリ言語」って理解するのは先が思いやられるな。全然意味が違う話なのに
83デフォルトの名無しさん (ワッチョイ 75e8-LiJ6)
2017/10/09(月) 22:16:05.20ID:28tAbNEV084デフォルトの名無しさん (ワッチョイ dad2-B8PL)
2017/10/09(月) 22:41:05.37ID:rAF1hT8M0 ありがとう。
今自分でも調べていてなんか違うなーって思ってました。
今自分でも調べていてなんか違うなーって思ってました。
85デフォルトの名無しさん (ワッチョイ 7680-HC+h)
2017/10/09(月) 23:04:42.97ID:/pZGRYTm0 bin
バイナリ・ファイル
バイナリ・ファイル
86デフォルトの名無しさん (ワッチョイ 7d80-Wlpn)
2017/10/10(火) 00:40:47.02ID:pliWVB3X0 今となっては、いや初めから忘れてもいい話だったけど
ファイル単位の物理的なまとまりはモジュール(.netmodule)で
モジュールをまとめた論理的まとまりがアセンブリ(.dll/.exe)
Visual Studioが2002の初めから一貫してサポートしてないこのモジュールって単位をMSはどう使うつもりだったんだろう
ファイル単位の物理的なまとまりはモジュール(.netmodule)で
モジュールをまとめた論理的まとまりがアセンブリ(.dll/.exe)
Visual Studioが2002の初めから一貫してサポートしてないこのモジュールって単位をMSはどう使うつもりだったんだろう
87デフォルトの名無しさん (ワッチョイ 718a-QWl5)
2017/10/10(火) 21:13:43.71ID:9Raz+qz10 最終的に1つのライブラリにしたいものをC#とF#で部分ごとに書き分けるとかそういう例は見た事あるけど
(ものによってはF#のほうが書きやすいとか)
実際それが必要なユーザがどれだけいるのかって話な
(ものによってはF#のほうが書きやすいとか)
実際それが必要なユーザがどれだけいるのかって話な
88デフォルトの名無しさん (ワッチョイ b66c-XSap)
2017/10/10(火) 23:25:11.21ID:I+aeGBiR0 C++/CLIとC#の組み合わせがある。
最終的な呼び出し元はネイティブと同じ口なんだけど、
dynamicやasync/awaitなどを使いたいため、
dllexport付近の薄皮一枚だけ C++/CLI、
残りは全部C#で記述して1つの.dllにってのに.netmoduleを使う。
C#とF#の組み合わせとか、ほとんど無意味に思えるが…
最終的な呼び出し元はネイティブと同じ口なんだけど、
dynamicやasync/awaitなどを使いたいため、
dllexport付近の薄皮一枚だけ C++/CLI、
残りは全部C#で記述して1つの.dllにってのに.netmoduleを使う。
C#とF#の組み合わせとか、ほとんど無意味に思えるが…
89デフォルトの名無しさん (ワンミングク MMea-tpYQ)
2017/10/11(水) 03:26:54.68ID:rqqSAVqsM iron python も?
90デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)
2017/10/18(水) 13:52:47.94ID:ufsScDVj0 event解除ってnullぶっこんでもいいのかしら?
何処見ても-=でしろってのばかりで全解除の適切なやり方載ってないんだけど
一応null代入で動いてるぽいけどちと不安
何処見ても-=でしろってのばかりで全解除の適切なやり方載ってないんだけど
一応null代入で動いてるぽいけどちと不安
91デフォルトの名無しさん (アウアウオー Sa63-a7FE)
2017/10/18(水) 14:05:31.13ID:4p9Ry6Jxa まいなすはそれだけ消す、nullはすべて消す
できわるいコードだとnull入れると落ちるw
できわるいコードだとnull入れると落ちるw
92デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)
2017/10/18(水) 14:18:32.71ID:ufsScDVj0 全解除ってそれなりに需要あると思うんだが何処も扱ってない不思議
+=って内から外へ処理出しする訳だから
インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
nullぶっこめばGC回収されるみたいだけど正しいやり方なのかな
+=って内から外へ処理出しする訳だから
インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
nullぶっこめばGC回収されるみたいだけど正しいやり方なのかな
93デフォルトの名無しさん (ワントンキン MMd3-Pfbr)
2017/10/18(水) 15:17:21.27ID:8oWZ+6kpM 設計次第じゃないの
94デフォルトの名無しさん (アウアウエー Sae3-FoSE)
2017/10/18(水) 15:34:04.84ID:jnsT8t6ma 購読側じゃなく発行側が勝手に解除ってのがちょっと...
むしろどういう場面で必要になるのか想像できないな
> +=って内から外へ処理出しする訳だから
> インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
ここは何を言ってるのかよく分からない
まあ、イベントというかデリゲートのマルキチャストの仕組みが分かりづらいのはわかる
むしろどういう場面で必要になるのか想像できないな
> +=って内から外へ処理出しする訳だから
> インスタンスが破棄されたら当然破棄されるべきなのにどうもそうなってない
ここは何を言ってるのかよく分からない
まあ、イベントというかデリゲートのマルキチャストの仕組みが分かりづらいのはわかる
95デフォルトの名無しさん (アウアウオー Sa63-a7FE)
2017/10/18(水) 15:50:00.66ID:h6dEijxza96デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)
2017/10/18(水) 16:11:03.50ID:ufsScDVj0 >>94
例えば非同期通信でデシリアライズ終わったらイベント投げて後は勝手に死ね、って場合
-=だと発行側で解除するのが困難でリークしちまう
最新VerC#ならTaskで後処理書けばいいけど、Unityだとつい最近まで3.5だったから
例えば非同期通信でデシリアライズ終わったらイベント投げて後は勝手に死ね、って場合
-=だと発行側で解除するのが困難でリークしちまう
最新VerC#ならTaskで後処理書けばいいけど、Unityだとつい最近まで3.5だったから
97デフォルトの名無しさん (アウアウエー Sae3-FoSE)
2017/10/18(水) 16:24:45.96ID:jnsT8t6ma >>96
俺の理解不足だったらごめん
リークするのはイベントの購読側のオブジェクトLがイベントの購読を解除しないまま
Lを参照する変数がなくなった場合で、発行側のオブジェクトPのイベントに
Lのメソッドが登録されたままPへの参照がなくなってもそれはリークにならないと思うんですが
俺の理解不足だったらごめん
リークするのはイベントの購読側のオブジェクトLがイベントの購読を解除しないまま
Lを参照する変数がなくなった場合で、発行側のオブジェクトPのイベントに
Lのメソッドが登録されたままPへの参照がなくなってもそれはリークにならないと思うんですが
98デフォルトの名無しさん (ワッチョイ 0b7a-7iB9)
2017/10/18(水) 16:39:10.41ID:ufsScDVj0 >>97
そう思ってた時期が俺にもありました
しかし実際はリークしてOutofMemoryが出る
どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
本当にそういう理屈かは知らんけどnullぶち込むと例外でなくなる
そう思ってた時期が俺にもありました
しかし実際はリークしてOutofMemoryが出る
どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
本当にそういう理屈かは知らんけどnullぶち込むと例外でなくなる
99デフォルトの名無しさん (ワッチョイ 797e-lqEX)
2017/10/18(水) 17:26:02.20ID:jNhOnQNR0 思い込みって怖いネー
100デフォルトの名無しさん (ワッチョイ 93b3-meYy)
2017/10/18(水) 17:46:05.16ID:GswCLlj60 >>98
>どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
登録解除してないから購読側は発行側から参照されてて回収されない
その状態で購読側が発行側を参照してるんなら発行側も回収されないよね
>どうも購読側参照が残ってると到達可能と見られてGC回収されないぽい
登録解除してないから購読側は発行側から参照されてて回収されない
その状態で購読側が発行側を参照してるんなら発行側も回収されないよね
101デフォルトの名無しさん (ワッチョイ 7996-lqEX)
2017/10/18(水) 19:19:26.31ID:j/PgXgnk0 循環参照しててもルートから到達不能なら回収されるよ
されないなら単に循環参照以外の参照が何かしら残ってるだけ
いいや解放されないね!とかいう思い込みに付き合う気はないから
口ごたえがしたければ、VSのメモリーアナライザーで
リークしているというオブジェクトの参照状態のスナップショットを撮って
ここに貼り付けてから続けるように
されないなら単に循環参照以外の参照が何かしら残ってるだけ
いいや解放されないね!とかいう思い込みに付き合う気はないから
口ごたえがしたければ、VSのメモリーアナライザーで
リークしているというオブジェクトの参照状態のスナップショットを撮って
ここに貼り付けてから続けるように
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【高市朗報】 日本政府「一昨年は1300億円。去年も防衛費が1100億円余ったw」 日本の防衛費は充分足りてる事が判明。増やす必要無し [485983549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【速報】51歳まで自衛隊になれるように法改正ww [347751896]
