いてつくブログ

2ちゃんねるのスレッドをコピペしてまとめてみるブログ

LOCK

ニュースキーボードに必要ないキー 1位「Caps Lock」 2位「テンキー」 3位「Esc」

1 : バーミーズ(東京都):2012/07/03(火) 17:45:13.51 ID:tCfL3KAF0 ?PLT(16012) ポイント特典

 「CapsUnlocker」は、一定時間キー入力がない場合に[Caps Lock]キーの状態を自動でOFFにするタスクトレイ常駐型ソフト。
Windowsに対応するフリーソフトで、編集部にてWindows 7で動作を確認した。
作者のWeb(ピヨピヨ)からダウンロードできる。

 “Caps Lock”は、キーボードで入力したアルファベットを小文字から大文字へ切り替える機能。一般的な日本語配列キーボードの場合、
[Shift]+[Caps Lock]キーでON/OFFできる。英語ユーザーならいざしらず、
日本語ユーザーにとってはあまり重要でないばかりか、知らず知らずのうちにONに切り替わってミスタイプを誘発することもあり、わずらわしく感じられることも少なくない。

 そんな場合は、「CapsUnlocker」を試してみよう。

 本ソフトは、[Caps Lock]キーのON/OFFをタスクトレイアイコンで通知するインジケーター。
一定期間キー入力がない場合に、自動で“Caps Lock”を無効化する機能(Unlocking)を備えるのがユニークで、“Caps Lock”の解除忘れを防止するのに役立つ。

 “Caps Lock”の自動解除機能を利用するには、タスクトレイアイコンの右(バキューン!)メニューにある[Enable Unlocking]項目をONにしよう。設定画面からは、
“Caps Lock”の解除までの待機時間を秒単位で指定できる。

 また、[Disable Caps Lock]メニューをONにして、キー入力による“Caps Lock”の利用を禁止してしまうことも可能。
“Caps Lock”を利用する予定がない場合は、こちらを利用するとよいだろう。

 なお、[Enable Override]メニューは[Shift]+[Caps Lock]キーによる“Caps Lock”の有効化を許可する機能だが、日本語配列のキーボードでは標準の動作なので、
日本語ユーザーにはあまり関係がない。
http://www.forest.impress.co.jp/docs/review/20120703_544295.html

16 : ウンピョウ(京都府):2012/07/03(火) 17:47:28.79 ID:050th/6S0
右シフトって何に使うのよ?

20 : シンガプーラ(福岡県):2012/07/03(火) 17:47:58.25 ID:fejzCWDhP
テンキー付いてるノートって何考えてんの?
その分メインのとこ変態とか頭オカシイだろ

23 : ウンピョウ(dion軍):2012/07/03(火) 17:48:26.45 ID:kWnSLlCo0
Home、End、Insert、PageUp、PageDown
ここら辺

35 : オセロット(catv?):2012/07/03(火) 17:50:19.14 ID:cMo7j/1i0
右側のCtrlと窓キーの間にあるキーってなんなんだ

37 : リビアヤマネコ(鳥取県):2012/07/03(火) 17:50:47.49 ID:nsbj4Gcy0
FPSやるやつはWindowsキーが大嫌いなはず

38 : ヒマラヤン(やわらか銀行):2012/07/03(火) 17:50:52.34 ID:zs+L7Ejv0
caps lockはctrlにするのに必要だろうが

70 : エキゾチックショートヘア(新潟県):2012/07/03(火) 17:58:48.30 ID:gzugSNv+0
Pauseキーだな
SysRqもいらない

73 : アメリカンワイヤーヘア(家):2012/07/03(火) 17:59:08.39 ID:KubdhN3a0
Linux使ってる身分からいわせてもらうとCapslockは超重要

77 : スコティッシュフォールド(鹿児島県):2012/07/03(火) 17:59:44.68 ID:pMe/Ej9T0
ν速民ならcapslockとctrlを入れ替えてるよな

80 : スコティッシュフォールド(鹿児島県):2012/07/03(火) 18:00:16.79 ID:pMe/Ej9T0
>>73
なんで?

81 : スミロドン(北海道):2012/07/03(火) 18:00:43.36 ID:QDyGjoH50
最近Deleteってボタンの存在に気付いた…
今までずっと消したい文字の右端までいってBackspace押してたわ…

あとキーボードによって違うのかもしれないけど
よく見たらPageUp/Downてのもあるな。必要なのかこれ

103 : サビイロネコ(宮城県):2012/07/03(火) 18:05:47.18 ID:ivaIBCQc0
無変換キーと変換キーの使い方がわからない

108 : アメリカンワイヤーヘア(静岡県):2012/07/03(火) 18:07:16.24 ID:Gasr6wvy0
pause break ってBIOS出すときくらいしか使わない・・・

113 : ブリティッシュショートヘア(千葉県):2012/07/03(火) 18:07:58.89 ID:L5V4Xf4r0
http://i.imgur.com/dv4Br.jpg
↑全部使ってない

116 : デボンレックス(静岡県):2012/07/03(火) 18:09:02.18 ID:otQ7dpeq0
>>108
一部のプログラミングで必要

142 : スコティッシュフォールド(鹿児島県):2012/07/03(火) 18:17:49.64 ID:pMe/Ej9T0
>>116
一部のプログラミングってなんのことだ?

144 : エキゾチックショートヘア(家):2012/07/03(火) 18:19:05.49 ID:nOUaLggY0
変換はスペースキーでやるもんだと思ってたけど、変換キー押してやってる人がいて変換するとき変換キーでやるんですか?」っていったらちょっと変な顔された
そりゃそうだなとは思ったけど、ずっと変換キーって何に使うんだろうなーって思ってたけど、まさか変換に使うものだったとは

145 : スナドリネコ(埼玉県):2012/07/03(火) 18:19:09.23 ID:0cHv+uzg0
ESCなかったら、ゲーム終了できないだろwwwwwwwwwwwwww

いらないキーといえば、なんか変なマーク書いてあって押すと右クリックと同様の効果がある謎のキーだろ。

150 : バーミーズ(東京都):2012/07/03(火) 18:20:29.52 ID:6PLq7wsgP
はいじゃリターンキー押して、リターンだよリターン
無いってそんなわけないだろあるだろリターン押せよ
つか普通入力したらリターン押すだろパソコンの常識的操作として
ってゆとりに怒鳴り散らしてたらマジでリターンが無くてエンターだった

153 : エキゾチックショートヘア(catv?):2012/07/03(火) 18:21:28.18 ID:tjt5FOUd0
C:\>tree

Pause Breakって押してみろ。
便利だぞ。

158 : オリエンタル(北海道):2012/07/03(火) 18:23:18.42 ID:757hSOXj0
>>16
> 右シフトって何に使うのよ?








お前3本指打法だろ(´Д`)y-~~







普通に使うわ(´Д`)y-~~

165 : アメリカンワイヤーヘア(WiMAX):2012/07/03(火) 18:25:14.98 ID:kkB9nB+R0
昔CAPSLOCKって物理的にロックかからなかったけ
カチッと

166 : ピューマ(dion軍):2012/07/03(火) 18:25:33.70 ID:hu8RJHPa0
capslockは不要な癖して、占有面積でかいのが腹立つ。
何とかならんのか?おお!?


169 : エキゾチックショートヘア(家):2012/07/03(火) 18:26:39.89 ID:nOUaLggY0
>>150
俺も会社のおっさんていうか所長に説明してて「リターン押してください」って行ったら戸惑ってるから、
「リターンキーですよ、リターンキーです!いつも最後にターンて押す奴ですよ!」っていったら「・・・エンターキーのこと?」とかいうから「は!?」と思ってみてみたら確かにエンターキーだった

176 : キジ白(関東・甲信越):2012/07/03(火) 18:29:20.38 ID:tt6+Ny6vO
>>169
俺も間違えるんだけど、なんで間違えるのか分からない
昔はreturnだったのか?

180 : カラカル(宮城県):2012/07/03(火) 18:30:19.55 ID:XnWYEEqF0 ?PLT(13000)
>>176
9801のキーボドがReturnだった

183 : スナネコ(東京都):2012/07/03(火) 18:31:32.58 ID:fUVv5U1H0
>>169
昔はリターンキーだった気がする
タイプライターの流れだとは思うが…

186 : 黒トラ(東京都):2012/07/03(火) 18:32:14.38 ID:xZx+Z3Ez0
テンキーのEnterって相当重要だろ…
マウス握りながら親指で出来るんだし

187 : エキゾチックショートヘア(家):2012/07/03(火) 18:32:29.97 ID:nOUaLggY0
>>176
MSXの頃からリターンだった気がする
だいたいエンターってどこにエンターするんだよ

191 : アメリカンカール(四国地方):2012/07/03(火) 18:34:20.14 ID:/ybQpYUY0
テンキーとEseはいるだろ、いらないのはPageうp、DownとPuseとかあのあたりのキー

198 : カラカル(家):2012/07/03(火) 18:37:52.00 ID:byBGziao0
Power/Sleep/Wake

誤押しで勝手にシャットダウンなんてまだかわいい方だ

数時間頭ひねった無セーブ作業がパーになった事数回(´・ω・`)
子供にキーボードテキトーに押されてたまたまヒットした事数回(´・ω・ω・`)

199 : オリエンタル(広島県):2012/07/03(火) 18:38:26.47 ID:pf2gMhww0
101キーボードはメインフレームの端末の流れを組んでるからな
SysRqとか今は使われないキーもある

203 : バーミーズ(神奈川県):2012/07/03(火) 18:39:57.39 ID:8HO/or7JP
Escがないとviエディターどうすればいいの

208 : コーニッシュレック(神奈川県):2012/07/03(火) 18:41:56.89 ID:29lfddb/0
おまえらキーボードの kとl みてみ

209 : ライオン(新疆ウイグル自治区):2012/07/03(火) 18:43:16.04 ID:7nS8SQDb0
>>198
電源オプションあたりで無効ににできなかったけ?
というかなんでそんなのがついてるキーボードを…

219 : 白黒(WiMAX):2012/07/03(火) 18:51:14.28 ID:ApqtrIwz0
windowsキー一択だろ・・

220 : サーバル(四国地方):2012/07/03(火) 18:51:45.39 ID:2x9VLzje0
…(´・ω・`)
http://iup.2ch-library.com/i/i0678444-1341308896.jpg

223 : 白黒(WiMAX):2012/07/03(火) 18:53:20.72 ID:ApqtrIwz0
>>220
altキーきたねえな
ポテチでも食ったかよ

226 : 縞三毛(東京都):2012/07/03(火) 18:58:50.14 ID:DTukG7pC0
会計ソフト使ってる人には必須だね
電卓と同じ配置だから数字はめっちゃ早く打てる

229 : アメリカンショートヘア(長屋):2012/07/03(火) 18:59:51.22 ID:YQ6qZm0D0
>>226
テンキーと電卓は上下逆じゃね?

231 : ぬこ(長屋):2012/07/03(火) 19:00:10.05 ID:Y1fiUeL60
>>16
コード入力するときには頻繁に使うよ

Caps Lockも MouseEvent.MOUSE_DOWN などと大文字が続くときにあった方が便利

要らないとしたら、windowsボタン、アプリケーションキー、
Insert、Home、PageUp、PageDown、変換、無変換、NumLock、Pouse、ScrLK
だな
Home、PageUp、PageDownとかはマウスやスクロールバー動かせばいいだけじゃん



234 : アメリカンショートヘア(長屋):2012/07/03(火) 19:01:36.92 ID:YQ6qZm0D0
>>229
気のせいだったわ

238 : アフリカゴールデンキャット(空):2012/07/03(火) 19:04:27.08 ID:VYQ+Z+nS0
>>234
電話じゃね?


262 : ラガマフィン(愛知県):2012/07/03(火) 19:21:09.87 ID:ymXF0yKL0
左利きのやつってキーボードとかコントローラーとか違和感無いのかね

274 : ピューマ(和歌山県):2012/07/03(火) 19:32:47.76 ID:YKUvLIOy0 ?2BP(1115)

おまえ等が一番使ってないのは
やる気だろ

290 : ウンピョウ(福岡県):2012/07/03(火) 19:45:21.97 ID:yDR+6uMy0
capsのような人類の0.001%ぐらいしか使わないキーを何故Aの隣に配置するんだよ

292 : バーミーズ(チベット自治区):2012/07/03(火) 19:46:17.63 ID:Xw/2gWhrP
capslk:大文字連続入力時にいる
esc:全画面からの脱出他意外と使う
alt:使った事ない

293 : オリエンタル(宮崎県):2012/07/03(火) 19:46:31.75 ID:rl/KVOPp0
【無変換】←これ何のためにあるの?考えた奴氏ねよ今直ぐ氏ね

297 : キジトラ(山口県):2012/07/03(火) 19:47:12.22 ID:bYFVGbb80
>>293
カタカナに変換するときに使わないか?

300 : オリエンタル(宮崎県):2012/07/03(火) 19:48:14.98 ID:rl/KVOPp0
>>297
使わねーよ氏ね
F7,F8が何のためにあると思ってんだ氏ね

306 : マヌルネコ(長屋):2012/07/03(火) 19:52:02.33 ID:xjdUTRMD0
>>292
Alt 使ったこと無いのかー。
昔は Ctrl+Alt+Del は必須機能だったんだぞ。

308 : ヤマネコ(公衆):2012/07/03(火) 19:52:26.41 ID:w3RqT55+0
http://www.keyboardforblondes.com/images/Keyboard_for_Blondes_pic.jpg

315 : スフィンクス(チベット自治区):2012/07/03(火) 19:56:18.94 ID:yCYKlEbb0
F5以外のFキーのいみがわからない

327 : キジトラ(山口県):2012/07/03(火) 20:03:16.50 ID:bYFVGbb80
>>292
Alt+F4でアプリ終了
Alt+PrtScでアクティブウインドウだけキャプチャー
Alt+Tabでプログラム切り替えとか

333 : メインクーン(内モンゴル自治区):2012/07/03(火) 20:06:12.88 ID:NUpjxl7LO
altはaltabで使いまくるだろ

335 : クロアシネコ(やわらか銀行):2012/07/03(火) 20:07:29.83 ID:jckD1j910
STOP

344 : 白黒(愛知県):2012/07/03(火) 20:14:45.60 ID:Ygv/GCuU0
NumLockをナンバーロック
Altをアルト

って呼ぶ奴って何なの?

357 : ロシアンブルー(東海地方):2012/07/03(火) 20:33:57.13 ID:bn9AsYCCO
XFERとNFERがいらない。
ってか、使い方がわからん。学校のパソコンにはないのに、
家のパソコンにはある。

362 : しぃ(やわらか銀行):2012/07/03(火) 20:37:10.86 ID:cZaF6gPp0
caps lockはローマ字かな入力と半角英数を切り替える時に重宝してるんだが、ひょっとして少数派なのか?

368 : ぬこ(長屋):2012/07/03(火) 20:39:36.18 ID:Y1fiUeL60
F1,F2,F3,F4は3Dモデリングツールの視点移動で多用してる

F5:メモ帳で日時を打つ
F6:ひらがなに変換
F7:カタカナに変換
F8:半角カタカナに変換
F9:大文字英数に変換
F10:半角英数に変換

F1~10はよく使うけど、F11,F12はまるで使ってないわ

381 : ライオン(東日本):2012/07/03(火) 20:46:08.55 ID:Zr5Ce9HI0
windowsキーいらないって言うけど
タスクバーが引っ込んで出て来なくなったりしないの?

俺のPCしょっちゅうなるんだが

382 : ロシアンブルー(チベット自治区):2012/07/03(火) 20:48:23.63 ID:CW7Sga9h0
scroll lockって何に使うキーなの。

DOSはで有効にするとカーソルキーの上下がROLLUP・DOWNになるんだっけ?

387 : デボンレックス(東京都):2012/07/03(火) 20:53:57.99 ID:aLw5pO170
Win+DはXVIDEOS見てるときは必須だよね

389 : キジトラ(WiMAX):2012/07/03(火) 20:55:21.80 ID:51MhnB0+0
>>382
その名の通りCtrol+Sと同じ機能。でもGUIが標準になった現在では過去の遺物
でも、最近はKVMスイッチのCPU切替ホットキーとして割り当ててる場合が多いからそれなりに重宝

390 : アメリカンボブテイル(やわらか銀行):2012/07/03(火) 20:55:56.92 ID:Kyndet390
>>362
自分も使うよ
つか、変換とかカタカナひらがなって要らんよね

398 : キジトラ(山口県):2012/07/03(火) 21:00:09.20 ID:bYFVGbb80
>>381
Ctrl+EscでWindowsキーの代用できるから無くても問題なし

417 : イエネコ(チベット自治区):2012/07/03(火) 21:48:07.56 ID:DvvdKkuT0
Windowsマークのキーが要らないだろJK

448 : ラ・パーマ(中部地方):2012/07/03(火) 22:33:49.16 ID:O1GMh1Sd0 ?PLT(12085)

http://blog-imgs-36.fc2.com/k/a/n/kanmigiken/realforce-1_c.jpg

450 : コラット(千葉県):2012/07/03(火) 22:37:55.11 ID:M6y/CYOE0
テンキーいるじゃん
テンキー以外でどうやって数字打ってんの?
まさかあの上段にある横一文字じに広がりきった糞みてーなキーで打ってやがるの?
テンキーでサクッとやった方がいいじゃん

459 : シンガプーラ(東京都):2012/07/03(火) 22:59:33.64 ID:AwW1Oso9P
テンキーはプログラマン向けに16進のも出して欲しい

473 : オリエンタル(京都府):2012/07/03(火) 23:34:29.97 ID:uI0c9pH40
ゲームやってるとescキーは必要だけどcaps lockだけはいらない
マジで要らない

474 : マンクス(神奈川県):2012/07/03(火) 23:36:30.54 ID:lJ6Q+m+90
騒いでるやつがいたから
試しにwindowsキーをいくつか使うようになったんだけど
これはいいものだ・・・

502 : ツシマヤマネコ(家):2012/07/04(水) 00:30:06.77 ID:26XNnhmg0
Escはviで使います

505 : ベンガルヤマネコ(神奈川県):2012/07/04(水) 00:31:52.33 ID:3mEejU970
>>502
Linux初心者はviの使い方覚えるとすぐ自慢したがるよね(´・ω・`)

515 : キジ白(WiMAX):2012/07/04(水) 00:44:57.79 ID:/N+oAUdL0
>>368
> F6:ひらがなに変換
 Ctrl+U

> F7:カタカナに変換
 Ctrl+I

> F8:半角カタカナに変換
 Ctrl+O

CAPS LOCKをCtrlにするようなソフトを入れて
このあたり知ってるとマジ楽だぞ。


516 : ジャングルキャット(家):2012/07/04(水) 00:47:16.17 ID:R9iVAPNz0
>>515
capslockの位置は本来すげー使いやすいのにな
そんなソフトまで出てるのかよ

520 : キジ白(WiMAX):2012/07/04(水) 00:52:27.13 ID:/N+oAUdL0
>>516
というか、今のIBM-PC形式の並びがデファクトになるまでは、
CtrlキーがAの横にあるキーボードはワークステーションでは珍しくなかったよ。
Sunとかだと殆どそうだったはず。

> そんなソフトまで出てるのかよ

これお勧め。

KeyCtrl
http://www.vector.co.jp/soft/winnt/util/se220597.html

どんなキーも入れ替え可能。
俺は、Caps LockをCtrlと同じにしてある。

532 : リビアヤマネコ(埼玉県):2012/07/04(水) 01:25:32.38 ID:TyR13YZG0
テンキーは事務とかデータ打ち込みやってないとその価値がわからないかも
いらないいらないと言っている人はそういう仕事じゃないんだろう

535 : ボブキャット(新潟県):2012/07/04(水) 01:29:00.32 ID:VODT2Gmj0
テンキーいらない派って半角数字打つ時どうしてんの

539 : ヒョウ(やわらか銀行):2012/07/04(水) 01:31:28.81 ID:sbiWVl4b0
むしろ CapsLock キーを最も多用しているかもしれない
実態は Ctrl キーだが

544 : ターキッシュバン(新疆ウイグル自治区):2012/07/04(水) 01:41:45.26 ID:5LYT04dZ0
そんなことより、右側のAltの隣にある
ノートみたいな絵のキーは何なんだよ
これまで一度も押したことねえ
あとHOMEとかENDとかも誰が得するのかわからない

564 : ベンガルヤマネコ(千葉県):2012/07/04(水) 03:37:05.33 ID:vAOjcq510
F2のつもりでF1押した時の絶望感


http://hayabusa3.2ch.net/test/read.cgi/news/1341305113/l50人気ブログランキングへ


PC等マルチスレッドプログラミング相談室 その8

1 :デフォルトの名無しさん:2009/09/21(月) 17:19:27
マルチスレッドプログラミングについて語るスレ

■前スレ
マルチスレッドプログラミング相談室 その7
http://pc12.2ch.net/test/read.cgi/tech/1215253576/

■過去スレ
その1 ttp://pc3.2ch.net/tech/kako/997/997345868.html
その2 ttp://pc5.2ch.net/test/read.cgi/tech/1037636153/
その3 ttp://pc8.2ch.net/test/read.cgi/tech/1098268137/
その4 ttp://pc8.2ch.net/test/read.cgi/tech/1130984585/
その5 ttp://pc11.2ch.net/test/read.cgi/tech/1157814833/
その6 ttp://pc11.2ch.net/test/read.cgi/tech/1187008532/

OS・言語・環境は問わないが、それゆえ明記すべし。
テンプレ
【OS】
【言語】
【実行環境】
【その他特記する事項】

3 :デフォルトの名無しさん:2009/09/21(月) 20:58:08
>>993
> lock-freeをある程度かじれば分かるが、要素数もatomicじゃなくていいよ
> スレッド状態は特権リング内の管理だろうから内部の挙動はシラネ
> ユーザーレベルで言うなら、lock-free queueをスピン&スリープで待機するなら
> スレッド状態も持つ必要なし

spinlock なら普通はスリープじゃなくて再スケジュー
ルじゃないだろか。まぁいいけどさ。

でか、spinlock 使う位なら俺にとってはキュー操作と
一緒にやる作業の大きさで mutex にするか spinlock
にするかってだけの話になって、キュー自体にはやっぱ
り排他責務なんか持たせないなぁ…。

あ、「キューに特化するとキューの特性に沿ったとても
効率の良い spinlock 的な何かがある」ってこと?

それとも、生産者が一つ生産してキューに生産物を入れ
る度に上限数まで消費者スレッドを起こして、とかいう
生産時間<<消費時間な場合に使うわけ? 確かにこの場合
は有効そうだけど。

6 :デフォルトの名無しさん:2009/09/21(月) 23:34:52
>>3
普通にlock-free queueを全く分かってなくね?
アトミック操作も要らないタイプすら作れるんだが、何でキュー自体に排他機能とか
変な話になってるんだ。

13 :デフォルトの名無しさん:2009/09/22(火) 00:08:35
lock-free queueって、計算処理は非常に重いけど、スレッドモデルとしては
比較的単純なケース(マスタ-スレーブモデル)に利用されるものなのかな?

たとえば動画エンコ/3Dレンダ/科学計算といった応用のように、
親スレッドが複数の子スレッドを生成し、各子スレッドが計算処理を実行し、
結果をlock-free queueに追加していく。親スレッドはjoinですべての計算の
終了を待ち、joinから抜けたらqueueから順に計算結果を取り出す...みたいな。
このモデルだと、スレッド間の同期なんて考える必要はまったく無い。

>>3の生産者-消費者モデルというのは、スレッド間同期の代表的な題材だから、
lock-free queueの話題とするのは、そもそも畑違いであると。

lock-free queueについては分かっていないので、有識者の指摘たのむ。

14 :13:2009/09/22(火) 01:44:44
(>>13の続き)

あるいは、>>13の応用ならリアルタイム性は要求されず、しかも
計算処理が(親スレッドの処理よりも相対的に)重いという前提があるから、
親スレッドは全子スレッド群の終了を(joinで)待ってから再開しなくても、
pollingで定期的にqueueから計算結果を取り出し、ゆっくりと
計算処理の進捗状況に合わせて出力(画面表示)していく方法だってある。
これもスレッド間の同期は考えなくてもいい。

なにかlock-free queueの利用イメージが見えたような気がするのは漏れだけ?
lock-free queue専門家からすれば「何を今更、そんなの常識」な話なのかな?

15 :デフォルトの名無しさん:2009/09/22(火) 02:22:42
そういう使い方はたぶん一般的だろうと思う
一対一の一方通行queueを双方向に張って適当にポーリングして同期っぽいことも
やれるし

ただ、汎用性をちょっと変えただけで実装が変わるから、結局バスロックするような
queueもあるだろうし、その辺ひっくるめてまとめて語るほどの経験は無いし

32 :デフォルトの名無しさん:2009/09/22(火) 21:59:00
もしかして、lock-free, wait-freeの "wait" を
sleep()とかyield()とかのことだと勘違いしている奴がいるんじゃないか?

35 :デフォルトの名無しさん:2009/09/22(火) 23:35:51
>>32
lock-free queueとは、スレッド間で共有するキューがあっても、
そのアクセスに「lock操作そのものが不要(free)」なキューである。

これは分かる。

では、wait-free queueとは、スレッド間で共有するキューがあり、
たとえそのキューが空であっても「wait操作そのものが不要(free)」な
キューである。

うーみゅ、どうやって実装しているんだ?それとも何か勘違いしてる?
分かんねーーーヨ....orz

40 :デフォルトの名無しさん:2009/09/23(水) 00:45:03
>>35
キューが空ならnullを返したり例外を投げたりすればいい。

たとえばJavaでは、要素が空のときにnullを返したりする Queue と、
要素が空のときに新たな要素が来るまで待機する操作がある BlockingQueue とが、
ちゃんと区別されている。
で、Queueにはwait-freeな実装クラス ConcurrentLinkedQueue があるけど、
BlockingQueueの実装クラスである LinkedBlockingQueue や ArrayBlockingQueue とかは
wait-freeでもlock-freeでもない。

で、君が欲しいのは Queue なの? BlockingQueueなの?

43 :35:2009/09/23(水) 06:49:21
>>40
レスありがトン。詳しい解説は、とても助かる。

欲しいのは、待機が可能なwait-free queueの実装クラスです。

この場合には、ConcurrentLinkedQueueでキューを生成し、
nullあるいは例外発生であればスレッドを(たとえばwait操作で)待機させるよう
アプリケーション側で実装することになるのでしょうか?
スレッドを待機させる方法はwait操作以外にもいろいろあるから、
どの方法を選ぶかはアプリケーションにまかせる、という考え方になります。

wait-free queueの意味が「wait操作そのものが不要なキュー」(>>35)ではなく、
「wait操作を実装していないキュー」の意味に思えてきました。

こんな感じで合っていますか?

45 :デフォルトの名無しさん:2009/09/23(水) 11:23:13
>>43
> 欲しいのは、待機が可能なwait-free queueの実装クラスです。

「待機が可能な」ってことは BlockingQueue が欲しいってことだね。

BlockingQueueの実装方法は2つ。
・待機しないQueueを用意し、要素が空だったらスピンしまくる。
・「キューが空でない」という条件変数を用いたモニタ同期を組み込む。
前者は明らかにCPUの無駄遣い。
後者はlock-freeでもwait-freeでもない。

てことで、>40にも書いたようにJavaのBlockingQueueの実装クラスが
wait-freeでもlock-freeでもないのは、手抜きしているわけではなく
そのように実装するのが不可能だからだ。

> wait-free queueの意味が「wait操作そのものが不要なキュー」(>>35)ではなく、
> 「wait操作を実装していないキュー」の意味に思えてきました。

だからそれは "wait-free" って言葉の意味を誤解してるって。
"wait-free" の wait とは、モニタ同期のwait()操作とかとは別物。
もちろん、sleep()とかyield()でもない。

55 :35:2009/09/23(水) 13:27:30
>>45
>てことで、>40にも書いたようにJavaのBlockingQueueの実装クラスが
>wait-freeでもlock-freeでもないのは、手抜きしているわけではなく
>そのように実装するのが不可能だからだ。

明解な説明です。理解できました。

>だからそれは "wait-free" って言葉の意味を誤解してるって。
>"wait-free" の wait とは、モニタ同期のwait()操作とかとは別物。

そのモニタ同期のwaiti()操作をイメージしていました。間違っていたんですね。
でわ、wait-freeの意味は、単純に「待ちが発生しない」へ改めます。
となると、lock-freeの意味も「待ちが発生する」に変わります。
ただし、どちらも「lock操作は不要」という特徴は共通している、と。
これでスッキリしました。

実は>>13,14,23のカキコ主だったのですが、lock-freeでは生産者-消費者モデルを
実現できない(畑違いである)ことが分かったので、次はwait-freeをと考えていましたが、
それも同様に誤解であることが理解できました。lock-free/wait-freeはスレッド間同期を
実現するプリミティブではない。それを実現するには、(lock操作を伴う)mutexや
モニタ同期(signal/wait)などを導入する必要がある、と。

lock-free/wait-freeの使い方について、ここ数日で急速にイメージが掴めてきた感覚です。
たいへんありがとうございました。>>all(特に>>15,32,40,45)
後は、Javaだけでなく、C/C++でも利用できる一般的なlock-free/wait-freeの実装技法が
確立し、標準ライブラリとして仕様化されることを願っています。

56 :デフォルトの名無しさん:2009/09/23(水) 13:37:41

lock-free queueは同期にも使えるよね?

57 :35:2009/09/23(水) 14:30:47
>>56
lock-free queueは「待ちが発生する」キューなので、スレッド間同期に
利用できるように見えるのですが、実際にはスピンによる実装なので、
「一般的な」アプリケーションでは利用できないと考えました。
言い換えると、lock-free queueだけで(mutexやモニタを一切使わずに)
「一般的な」アプリケーションを開発することは、現実的ではないという判断です。

もちろん、スピンが許されるケースや、mutexなどのオーバヘッドさえも
問題視される環境下では、lock-free queueを使わざるをえないケースも
存在していることは承知しています。あるいは、パフォーマンスクリティカルな
部分だけをlock-free queueで同期させ、残る大半ではmutexを使う設計も
あるでしょう。論理的にlock-free queueが同期に利用できないと
考えているわけではありません。

59 :デフォルトの名無しさん:2009/09/23(水) 17:49:20
CASとスピンは違うよ。スピンはロック解除待ちのループ。CASは更新中に割り込まれた場合のリトライ。
lock-freeの待ち時間は、よっぽどの酷い競合が起きたときに発生するにすぎない。一般的なアプリでは問題にならない。
そのような競合が起きるのは設計が悪いと思われる。


60 :デフォルトの名無しさん:2009/09/23(水) 18:05:46
>>55
http://www.ddj.com/hpc-high-performance-computing/208801974 これは?
俺はよく解んないからboost.threadのshared_mutexでmultiple-reader/single-writerやってるよ
マルチスレッドは奥が深いなぁ

69 :35:2009/09/23(水) 23:21:08
>>59
CASとスピンとで内部の実装方法が異なるのは分かります。

# その意味では、>>57は以下のように訂正したほうがよいかもしれませんね。
#
# X:利用できるように見えるのですが、実際にはスピンによる実装なので、
# O:利用できるように見えるのですが、実際にはCASやスピンによる実装なので、
#
# X:もちろん、スピンが許されるケースや、
# O:もちろん、CASやスピンが許されるケースや、

ただ、>>3が指摘した生産者-消費者モデルで生産時間<<消費時間な場合を除き、
言い換えると生産時間>消費時間な場合、大半の状態でキューは空(から)のままです。
その場合、(キューを読み出す側の)消費者スレッドは、どのようにして待てば
よいのでしょうか?CPUを無駄にせず、いかにリトライをループさせるのでしょうか?
たとえば一般的なアプリケーションのキー入力「待ち」はCASやスピンで実装できますか?

実は、生産者-消費者モデルに関する同じような疑問は>>3だけでなく、前スレでも
たびたびカキコされていたのですが、レスがないか、あっても消費者スレッドを
待たせる方法に関する説明が無く、ずっと考え込んでいました。それが、>>45のレスで
クリアになったので、生産者-消費者モデル実現の前提となるスレッド間の「同期」に
ついては、lock-free/wait-freeは使えないと判断できました。

もちろん生産者-消費者モデルであっても、スレッド間の共有キューへの「排他(競合対策)」
については、lock-free/wait-freeを使用できます。一時的な待ちへの対応ですから。
スレッド間の「同期」と「排他」を意識的に区別して使い分けていることに注意してください。

79 :35:2009/09/24(木) 11:56:35
>>60
記事の紹介、ありがとうございます。読んでみました。

記事では、C++でlock-freeを使って生産者-消費者モデルを実現していますね。
以下はすべてC++のWaitFreeQueueクラスとして実装されています。

・まずlock-freeで「排他」を実現するキューを実装。
 この時点では「排他」だけですから、スレッド間の「同期」は実現できていません。
・次に、キューが空である間、消費者スレッドをループさせ続けることで「同期」を実現。
 この方式では、キューが空であればCPUを100%消費します。
 ==> NATIVE_POOLING方式
・続いて、キューが空である間、消費者スレッドをスリープさせ続けるループを
 組むことで「同期」を実現。 ==> SLEEP方式
・最後に、BOOSTのcondition(timed_wait/notify操作)を使う事で、
 「同期」を実現。==> TIME_WAIT方式

(続く)

80 :35:2009/09/24(木) 11:59:49
(>>79の続き)

このC++ by DDJ実装と、>>40が紹介してくれたJavaの実装とを比較すると、
lock-free/wait-freeの意味に違いがあるように感じられました。
C++ by DDJ実装のTIME_WAIT方式は、JavaであればBlockingQueueクラスに相当しますが、
>>40では、BlockingQueueクラスは(同期の実現はモニタ使用が前提だから)
lock-free/wait-freeではない、と定義しています。

これらの一見矛盾しているように見える事柄を、自分なりに以下のように解釈してみました。

・lock-free/wait-free単独では「同期を実現できない」
・ただし、lock-free/wait-freeとスリープ(あるいはモニタ/conditionなど)とを組み合わせた制御を
 アプリケーション側で(たとえばクラスとして)実装することで「同期を実現できる」

誰も皆「排他」に関しては「実現できる」と見解は一致していますが、
この「同期」が「実現できる/できない」という解釈に関しては、人によって見解が
分かれているように思えます。違いは、「スリープ/モニタ/conditionなど」の使用を含めて
「できる」とする考え方と、それらは純粋なlock-free/wait-freeではない、とする考え方です。
難しい論争で、技術的な課題でもありませんから、私もこれ以上の考察は止めにします。

111 :デフォルトの名無しさん:2009/10/01(木) 09:08:46
見よう見まねでスピンロック実装して動作テストしたら標準のCriticalSectionより劇おそだったのは苦い思い出:プライスレス(´・ω・`)

112 :デフォルトの名無しさん:2009/10/01(木) 10:15:16
Win32のCriticalSectionの激速の理由は
プロセッサを判定して、可能ならばunlockにmovを使ってバスロックを避けているから

と俺は勝手に想像している。

114 :234:2009/10/01(木) 20:17:23
>>112
コンテキストスイッチが無いときはカーネルに入らずに、単にロックカウントをアップしてるだけだからだよ。


115 :デフォルトの名無しさん:2009/10/01(木) 21:48:37
>>114
いやそんなの当たり前だし。

「単純なスピンロックより速い(>>111)」理由が何故か?だよ。論点は。

193 :デフォルトの名無しさん:2009/11/05(木) 12:32:06
win32のインターロックをクリティカルセクションと
同じように使ったら早くて驚いた。

両者の内部的な違い・利点・欠点てなんですかね?

226 :デフォルトの名無しさん:2009/12/22(火) 22:31:16
読み込みと書き込みが1スレッドずつの場合でもメモリ破壊って起きるのでしょうか?

たとえば、ある変数をメインスレッドで読み込み続け、
複数のサブスレッドで、クリティカルセクションを用い、書き込むといった場合です

234 :デフォルトの名無しさん:2009/12/23(水) 11:15:37
昔使ったタイマ LSI でラッチ→lo-read→hi-readって
いう約束ごとのあるやつがあったな。hi-readでラッチ
が外れる奴。word-read 命令が使えるかどうかは CPU
次第。

235 :デフォルトの名無しさん:2009/12/23(水) 12:47:17
>>226
ハードや操作による。
つーか、まずは「アトミックな操作」という概念をどっかで調べとけ。

例えば、x86のCPUなんかだと、どういう操作がアトミックかはIntelが規定している。
アトミックな書き込みなら、別のコアからの読み込みが割り込む可能性は無い。逆に
アトミックでない書き込みなら、例えば半分くらい書き込んだところで別のコアが
読み込む可能性があるということ。
x86なら、厳密な規定はIntelの英語版サイトに落ちてる。32bitアラインドなreadや
writeは確実にアトミックだ。相当古いx86以外はキャッシュアラインドなら大丈夫。
read-modify-writeはLOCKプリフィクスが無い限りアトミックではないが、xchg
命令はLOCK#が自動的にアサートされるのでアトミックだ。
まぁ、アセンブラを直接叩くんじゃなければ、イントリンシック命令を調べておけば
十分だが、その裏でどういうCPUの動きをしているかは理解しといた方がいい。

つーか、低水準の話と高水準の話で全然違いすぎるんだよな。俺はどっちの話でも
構わんけど、分けた方がいいのか?

249 :デフォルトの名無しさん:2009/12/31(木) 15:09:39
何をもって高性能とするかをはっきりさせたいな
シングルコア100%アイドル3コアでできることを4コア25%ずつで処理することに意味はあるの?

326 :デフォルトの名無しさん:2010/02/22(月) 16:37:56
begintreadexを使ったときはclosehandleを使わないといけないらしいけど
CloseHandle((HANDLE)_beginthreadex());
こんな感じでいいの?

465 :デフォルトの名無しさん:2010/10/02(土) 10:56:16
たぶん、データが化ける可能性があると思う。
386SX以外にも、68000とか8088とかがその系統だったと思うし
今後も組み込み向けとかにそういうのが出てこないとは言い切れない。

だから、「intなら大丈夫」じゃなくて「intなら普通は大丈夫」程度。

とはいえ、組み込み向けのバス幅制限があるような環境では
マルチスレッドはともかく、
マルチプロセッサ/マルチコアはまずありえないと考えて良いんじゃないかな。

606 : ◆0uxK91AxII :2011/06/25(土) 18:39:30.70
Win32のCRTにある_beginthread。
生成は0.1[ms]未満、実行開始はコンパイラかライブラリに依存で0.1[ms]台からに訂正。

#include <Windows.h>
#include <stdio.h>
#include <process.h>
struct perf {LARGE_INTEGER freq;LARGE_INTEGER t0;};void __cdecl thread(void *
pArg){perf *pperf;LARGE_INTEGER t1, d;QueryPerformanceCounter(&t1);pperf = (perf
*)pArg;printf("thread: %I64d\n",t1.QuadPart-pperf->t0.QuadPart);}int main(){
LARGE_INTEGER f={0}, t0, t1, d;perf perf;QueryPerformanceFrequency(&f);printf(
"freq: %I64d\n", f.QuadPart);perf.freq = f;QueryPerformanceCounter(&t0);perf.t0
= t0;_beginthread(thread, 0, &perf);QueryPerformanceCounter(&t1);printf(
"main: %I64d\n", t1.QuadPart-t0.QuadPart);Sleep(1000);return 0;}

607 :デフォルトの名無しさん:2011/06/25(土) 22:55:22.93
>>606
5764ticks/272758=2.1ms。
一桁違ってないか?どんだけ速いマシン使ってんの

678 :デフォルトの名無しさん:2011/09/15(木) 12:18:55.76
C# よく分かんないけど、変数をまとめたクラス

class Vars {
  int a, b, c, ...;
  static Vars instance;
}

があって、更新側

Vars v = new Vars();
v.a = aaa;  // 1
v.b = bbb;  // 2
v.c = ccc;  // 3
...
Vars.instance = v;  // 4

これで 1 ?? 3 の順番が入れ替わるのは許せるけど、
1 ?? 3 と 4 の順番が入れ替わるのってありなの? まじ???


http://hibari.2ch.net/test/read.cgi/tech/1253521167/l50人気ブログランキングへ

学ばないブログ
忍者AdMax
記事検索
最新コメント
QRコード
QRコード
  • ライブドアブログ