08/08/11 16:12:16
マルチコアだけでなくハイパースレッディング環境でも
一応うまく動くようになってるよってことじゃないの?
779:デフォルトの名無しさん
08/08/11 16:16:00
マルチコアやハイパースレッディングみたいな環境でも問題起こらないって…
普通マルチコアやハイパースレッディング環境でしか使わないだろ
でハイパースレッディングの場合も一応うまく動くようになってるよってことだろ?
実装によっちゃ無意味にCPU目一杯ぶん回すだけで意味ない可能性もあるから。
780:デフォルトの名無しさん
08/08/11 16:19:36
コードを見ようと思ったがネイティブに飛んでてわからなかった。
予想できることは一定時間ごとにスレッドを譲る仕掛けか、
一定時間でSleepに変更するかといったところだろう。
1CPUの場合はすぐさまスイッチしないと意味が無いし、
2CPU以上ならある程度スピンさせてても大丈夫だろう。
HTの場合はその中間くらいで手打ちしてるんじゃなかろうか。
781:デフォルトの名無しさん
08/08/11 17:44:20
スピンはスレッド中断には移行しない。
だから自分でバックオフを持たなきゃならない。
まあそもそも長時間かかる可能性がないとこだけにしとくのが無難だけど。
ついでに大抵シングルコア環境では使わない。
HTの場合は処理なし命令?でスピンして、有効な処理ではないことが
CPUに分かるように実装されてるはず。
782:デフォルトの名無しさん
08/08/11 18:42:10
いやシングルコアでは使わないって言うか使うよ。高精度な
というかスイッチしない待ちのとき使うものでコア数関係ない
あえて言えば Win 上で動くからか
ちなみに HT の場合の話だがシェアするからビジーさせると
それが埋め尽くしちゃってパフォーマンスが極端に低下する。
だから PAUSE 命令が追加されててスピンにそれを使う必要が
あるんだがそれ使ってますよみたいな意
783:デフォルトの名無しさん
08/08/11 19:38:13
シングルコアでスイッチしない待ちをやること自体が少ないんじゃないの?
784:デフォルトの名無しさん
08/08/11 19:40:27
あ、ここでのシングルコアはHTは含んでない。
785:デフォルトの名無しさん
08/08/11 21:13:56
>>783
内部的でいいんなら Moniter やらの同期機構が内部で使ってる。
アプリレベルだと例えば単純にスイッチは精度が悪い(Sleep は「最低」
指定時間待つ API)ので timeBeginPeriod(or MMCSS)でスケジューラ
いじって Sleep とスピンウェイトのあわせ技がいい。
機会や直で使うジャンルが少ないのは同意。コア周り、メディア、ゲーム
系しか知らん。
というか一定時間(クロック)待つようなメソッドの使い方(ぶっちゃけタイマ
みたいなもんだ)がマルチコアしか使わないになんでなるんだよという話。
ぜんぜん別やん。
もしかしてマルチコアじゃなくマルチスレッドっていう話か?
…それはそれとして思い出したんだが iterations を現実時間から計算する
方法知っている人いたりしない?
786:デフォルトの名無しさん
08/08/11 21:55:36
いや、一般にメディア、ゲーム系なんていう特殊な用途以外じゃ
まず使う機会がないって感覚だった。
Winで一定時間(クロック)待つような使い方自体が特殊用途なイメージだったわ。
ところでMonitorやらってシングル環境でもSpinWaitしとんのかね??
787:デフォルトの名無しさん
08/08/11 22:15:43
>>786
モニタの場合は基本的に他のスレッドからの開放待ちだから1CPUではスレッドを譲らないと意味が無い。
マルチCPUの場合は最初はスピンで待って、一定時間越えたらSleep系のWaitに変える。
1CPUでスピンをやるとしたら、微妙なタイミングのIO制御や
他のディバイスからの割り込み待ちといったところで普通はディバイスドライバの仕事。
ゲームとかビデオとかそういうのが絡まない限り1CPUでビジーループはありえない。
788:デフォルトの名無しさん
08/08/11 22:28:21
だよねってことが聞きたかった。
単にシングル環境での
>内部的でいいんなら Moniter やらの同期機構が内部で使ってる。
について疑問だっただけ。
789:デフォルトの名無しさん
08/08/12 14:28:25
C#のおもしろい、本・ホームページ教えてけれ。
今、GUIをソースコードからうってcscでコンパイルしてるんだけど、おもしろい。
なんでもいいから、教えてけれ。
790:デフォルトの名無しさん
08/08/12 15:19:44
ちょっとGUIでアプリ(簡単な物)を作ろうと思ったのですが
C+APIはもう嫌になったので(殴
新たに何か言語を勉強すべくC#に目をつけたのですが、
・GUIアプリ製作のためにC#を学ぶ
この考えはまずいでしょうか?(もしくは他にもっと良いものがある?)
(プログラミングのスキルはCをそこそこ,JAVAは超初心者 です。)
791:デフォルトの名無しさん
08/08/12 15:25:51
いいと思うよ
792:デフォルトの名無しさん
08/08/12 15:30:00
>>789
猫でもわかるは知ってるよね?
URLリンク(www.kumei.ne.jp)
793:デフォルトの名無しさん
08/08/12 16:07:25
>>790
全然良い。
逆に言うと画像処理とか線形代数計算ならわざわざC#を選ぶ必要性がないしね。
イベントと継承が分かってくれば単純なGUIアプリならすぐ作れるようになるよ。
頑張れ。
794:デフォルトの名無しさん
08/08/12 16:24:17
JavaだろうがC#だろうがマルチスレッドになってからが本番だと思う
795:デフォルトの名無しさん
08/08/12 16:44:19
>>789
Google 先生の評価に従ってみるのもいいと思う。
796:789
08/08/12 18:44:30
>>792
猫はC#編もあるんだ。昔、WinAPIのときちょっと参考にしていたよ。
やってみるよ。さんくす!
>>795
Google先生でググってみます。色々あってどれがいいか見定めなきゃいかんけど、
がんばるよ。ありがとう。
797:デフォルトの名無しさん
08/08/12 20:56:08
MicrosoftPressのプログラミング.NET Frameworkが良かった
デリゲートやガベージコレクション、非同期処理などについてとても詳しい解説があるよ
798:デフォルトの名無しさん
08/08/13 09:50:20
DataGridViewを利用した自作カレンダーを作ったんだが、
これを複数のフォームで使いたいのね。
そういう時、クラスライブラリを作るのか、プロジェクトにクラス追加するのか、
どっちがいいの?
てか、プロジェクトに追加するクラスって、どういう時に使うの?