[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/04 17:21 / Filesize : 278 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2005/11/03(木) 11:23:05 ]
マルチスレッドプログラミングについて語るスレ。
OS・言語・環境は問わないが、それゆえ明記すべし。

その1 pc3.2ch.net/test/read.cgi/tech/997345868/
その2 pc5.2ch.net/test/read.cgi/tech/1037636153/
その3 pc8.2ch.net/test/read.cgi/tech/1098268137/

669 名前:デフォルトの名無しさん mailto:sage [2006/07/21(金) 21:16:04 ]
>>667
> 特にメリットも思いつかないので、

はあ


670 名前:デフォルトの名無しさん mailto:sage [2006/07/22(土) 00:47:01 ]
試したことはないが、
複数のThreadがServerSocket#accept()でブロックされてるとき、
ブロック解除で起こされるThreadはたぶん唯1つなのがメリットじゃないかな。
単一のThreadがaccept()待ち→ブロック解除→Queueに放り込んでWorker Threadを
たたき起こすパターンだと、Queueを監視する複数のWorker Threadがいったん
たたき起こされるから。


671 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 09:39:44 ]
pThreadsについての書籍を探してるのですが、以下のもの読まれてる方
感想はどうですか?良書ですかね?

www.amazon.com/gp/product/1584503718/ref=pd_rvi_gw_1/103-0885486-2811001?%5Fencoding=UTF8&v=glance&n=283155

www.amazon.com/gp/product/0735710430/ref=pd_rvi_gw_2/103-0885486-2811001?%5Fencoding=UTF8&v=glance&n=283155

672 名前:デフォルトの名無しさん [2006/07/26(水) 17:24:59 ]
お世話になります。
識者のご意見ください。

以下のような状況です。(環境はVC6のWin32API)

メインスレッドAと、待機スレッドBがあります。
BはSuspend状態です。

あるタイミングでAがBに仕事を投げてResumeしました。
Bは仕事が終わったら自分でSuspend状態になりたいのです。

Bは自分のHANDLEをSuspendThreadしちゃってもいいものでしょうか?
AがBのフラグを見てSuspendしてやるというのはちょっと効率が
悪い気がします。

以前はBを待機スレッドではなく、その都度生成して自殺させていました。
が、この方法だとデバッグウインドウに生成と消滅のメッセージが
出まくるのと、やはりCreateThreadの負荷が気になります。

こういう場合の常套手段など、ご教示ください。
待機スレッドがCPUを食わないようにするために、Suspend状態に
しておく、という風に考えるのは変でしょうか?

よろしくお願い致します。

673 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 17:36:12 ]
>>672
ただのワーカースレッドでええんちゃうかと
マイクロスレッドのようなものを考えてるなら、ファイバでも使えばいい


674 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 17:36:23 ]
>>672
自分をSuspendするのは悪くない。というか、それが唯一のSuspendThreadの正しい使い方。
基本的には自スレッド以外をSuspendThreadしてはいけない。

ただし、普通はautoresetのイベントハンドルを用意して WaitForSingleObject で待たせておき、
SetEventで起こす。これはAがBをResumeThreadで起こすのが難しいから。

具体的には、SuspendThread/ResumeThreadで待機を実現しようとすると、
ResumeThreadするときに、ちょうどBが何かの仕事を終えてSuspendThreadする
直前だったりするとResumeしても即Suspendしてしまうので、これを避けるために
クリティカルセクションとフラグが1つ余分に必要になってしまって効率も悪いし
コードもムダに複雑になる。


675 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 18:07:51 ]
みなさん、レス有難うございます。

>>674
>autoresetのイベントハンドルを用意して WaitForSingleObject で待たせておき

こんな感じでしょうか?

スレッドB{
while(1){
WaitForSingleObject(XXX);
何か仕事(B*)
}
}

スレッドA{
while(1){
何か仕事の準備(実行中のB*の部分を触らない配慮はしている)
SetEvent(XXX);
}
}

>直前だったりするとResumeしても即Suspendしてしまうので
なんとなく現象の心当たりがあります。



676 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 18:21:59 ]
>>675
Bが待機するところはそんな感じです。

あとまぁよく使うパターンとしては
(1) AがBの仕事の完了を待たずににいくつもの仕事を投げておけるようにQueueに仕事を登録して SetEvent する。Bは起こされたら、Queueにある仕事を全て実行してからWaitする。
(2a) 「仕事終わったよイベント(初期値はON)」ってのも用意して、Bが仕事を終えたらSetEventする。Aは仕事終わったよイベントを待ってからBを起こす
(2b) CreateSemaphoreでMaxCount 1 のセマフォを作って、AはWait,→仕事の準備→ReleaseSemaphore、
  BはWait→仕事を取り出して実行→ReleaseSemaphore とする。

仕事が終わったかどうか知りたくなることも多いので、漏れは2aのパターンを多用します。
殆ど等価な 2b でもいいのかも知れない。

677 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 19:36:15 ]
>>676
Suspend,Resumeでやってたところを待機オブジェクトにしました。
すっきりした感じがします。
>(2a)
なんとなくこれっぽいことはやっていました。
どうもありがとうございました。



678 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 21:47:50 ]
lock-freeについて調べている内に
CAS(CompareAndSwap)という概念にたどりついたのですが
ちょっと教えてください。
/* 関数内の処理はatomicに処理されると仮定*/
bool CAS(void*addr,int expval,int newval){
if(*addr == expval){
*addr = newval;return true;
}
return false;
}
*addr=0;
while(!CAS(addr,0,*addr + 1)){
//※ここでコンテキストスイッチ
}
//アトミックにインクリメント成功?
例えば※の部分で別スレッドがaddrの値を5に変更→0に変更
という動きをした場合、*addr == expvalが成り立ってしまい、
インクリメント成功とみなされてしまう気がするのですが・・・
何か回避策等あるんでしょうか。それとも俺の理解不足なんでしょうか

679 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 23:07:03 ]
>>678
「アトミックなインクリメント」というものを理解していないような気がする。
過去に5だったかどうかはさておき、他のスレッドで0にされたものが1に
なるのだから成功している。
というか5で放置されてて6になってもやはり成功。

*addr=0;
IntgerlockedIncrement(&addr); ←APIによるアトミックなインクリメント
などとしたところで、この2行の間に*addrが5になって0になることもある。

「アトミックなインクリメントに失敗」というのは、2つのスレッドで1度ずつ
アトミックなインクリメント操作が行われたにも関わらず2増えないことを言う。
これは正しい実装では決して起きない。

680 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 23:07:59 ]
追記:
CASによるアトミックなインクリメントの実装は、正しくは↓

while (!CAS(addr, *addr, *addr+1) {}


681 名前:678 mailto:sage [2006/07/27(木) 21:49:17 ]
>>679
>>680
ありがとうございます。

addr=&val;
while(!CAS(addr,*addr,*addr + 1)){
//※ここでコンテキストスイッチ
}
でも問題が起きそうな気がするんですが・・

とここまで書いて
www-06.ibm.com/jp/developerworks/java/041203/j_j-jtp11234.html
に似たような事が書いてありました
ABA問題というらしいですが

もうちょっと勉強してでなおしてきます・・

682 名前:デフォルトの名無しさん mailto:sage [2006/07/27(木) 23:41:31 ]
とりあえず、CAS(xxx, *addr, *addr+1)
なんて書いている奴は氏んでいいよ。

atomic_inc(int *addr)は
do {
 int var = *addr;
} while (!CAS(addr, var, var+1));
にしないと。

まあ、複数のスレッドで勝手に値をセットするような変数を
特定の個所だけatomic_incを使っても意味は無いがね。

683 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 00:03:12 ]
終わった話題についてなにを得意げに語ってるんだろう…。

684 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 00:20:12 ]
>>682
それC言語的にやばいやん。

685 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 00:31:47 ]
つまり、「ほんと、バカしかいないんだね」ってことか。

686 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 00:43:19 ]
やーい
ばかー

687 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 07:26:02 ]
volatileですべて解決!



688 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 12:24:47 ]
>>682
バカは喪前のほうだと思うが・・・
なぜ自分がバカなのかが知りたかったら、
元のコードの問題点を書いてご覧よ。
書いてるうちにわかるだろ。

689 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 17:51:17 ]
元のコードの問題点は関係なくて
*addrを2度読み出して同じ値が取れると思っているのがバカだって事だろ。

690 名前:デフォルトの名無しさん mailto:sage [2006/07/28(金) 17:53:25 ]
しかも、この手のバグは非常に表面化しにくく
再現性が低い(デバッグが難しい)。

691 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 15:08:13 ]
volatileですべて解決するという忠告がみえないのか?

692 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 16:14:19 ]
別CPUから発言が見えるようになるまでには時間がかかります

693 名前:デフォルトの名無しさん [2006/07/29(土) 18:15:53 ]
VC++とMFCでマルチスレッドなサーバープログラムを書いています。
サーバープログラムを終了する時、ソケットが走ってるスレッドを終了させないといけませんが、
スレッドに終了を通知する手段が分かりません。
どのように終了を通知するのか教えていただけないでしょうか。

よろしくお願いします。

694 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 19:01:50 ]
ソケットをどういう風に使ってるかによると思うけど、イベントとか単なるフラグとか。

695 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 19:36:20 ]
>>693
ExitProcessで自殺すればおk

696 名前:693 mailto:sage [2006/07/29(土) 19:49:37 ]
CAsyncSocketを継承して作ったUDPのソケットです。
クライアントからやってくるパケットをRecvFromで受けて、データに応じてSendToしているだけです。

現在、スレッドを閉じるのにdeleteでデストラクタを呼び、強制的に終了させているのですが
デバッガで追っかけていくとCAsyncSocketの中でエラーが発生します。
詳細は不明ですがおそらくソケットを閉じずに終了したためではないかと思います。

Win32APIでマルチスレッドなプログラムを組んだときはPostThreadMessageで終了メッセージを
送って、WaitForSingleObjectでスレッドが落ちるのを待っていたのですが、MFCで
そのような手順を踏んだ終了の仕方は(強制終了じゃないやり方)ないのでしょうか?

697 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 20:28:56 ]
CAsyncSocketて使ったことないから知らないけど、
非同期に通信してるなら終わりにするかどうか判断する機会はあるんじゃないの?



698 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 20:48:34 ]
CAsyncSocketのデストラクタが動けば万事OKみたいなことMSDNには書いてあるけど。
スレッドを強制終了するから、そのスタックにあるCAsyncSocketがリークしてるとか、
そういうこと?

699 名前:693 mailto:sage [2006/07/29(土) 21:12:35 ]
>>697
複数台の設備との通信をするサーバープログラムなのですが、設備のON/OFFとサーバーのON/OFFは
必ずしもリンクしていません。一応作業標準として順序だてることは可能ですが、予想外のトラブル(瞬停など)を
考えると何かのパケットが来たらソケットを閉じてもいいとはできません。
サーバープログラムを閉じる作業中にソケットが走っているスレッドに終了を通知できればいいのですが
その方法がわからないのです。

>>698
>そのスタックにあるCAsyncSocketがリークしてるとか
そのとおりです。

700 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 21:18:08 ]
スレッドが終了する時のイベントハンドラで
CAsyncSocketをdeleteじゃダメって事?

701 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 21:24:23 ]
>>700
今はスレッドのデストラクタでCAsyncSocketをdeleteしていますが、その中でエラーになります。

702 名前:デフォルトの名無しさん [2006/07/29(土) 21:38:00 ]
ねぇ。マルチスレッドって何?

703 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 21:40:39 ]
multi 【名-1】 (複数{ふくすう}の色調{しきちょう}からなる)縞模様{しま もよう} 【名-2】 マルチビタミン(錠剤{じょうざい})
thread 【名-1】 (繊維を束ねた)糸、より糸 【名-2】 糸[繊維]状のもの、細い筋状のもの 【名-3】 (全体をつなぎ止める)筋、(話などの)脈絡{みゃくらく}


704 名前:デフォルトの名無しさん [2006/07/29(土) 21:53:15 ]
縞模様の筋ですか?

705 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 21:55:30 ]
筋肉のことですか?

706 名前:デフォルトの名無しさん mailto:sage [2006/07/29(土) 22:29:03 ]
>>691
まさかとは思うけど、本気で言ってるわけじゃないよね?

707 名前:デフォルトの名無しさん [2006/07/30(日) 00:24:25 ]
>>689
だって別に同じ値じゃなくても問題ないんだよ。
単にその1度のCAS呼び出しがfalseになるだけ。




708 名前:デフォルトの名無しさん mailto:sage [2006/07/30(日) 00:32:23 ]
>>707
第3引数の *addr + 1 を評価した後に別スレッドによって *addr の値が変更され、
その後に第2引数の *addr が評価されるとアウト。

709 名前:デフォルトの名無しさん mailto:sage [2006/07/30(日) 09:43:28 ]
>>701
スレッドを強制終了させないで、外部から何かきっかけを与えて自分で終わるようにすればいいだけじゃん。

710 名前:デフォルトの名無しさん mailto:sage [2006/07/30(日) 15:36:23 ]
>>691>>707
>>708の言うように、
「CASの第2引数の値」と「CAS呼び出し時に*addrに入っている値」
これが違うのは問題ないが
「CASの第2引数と第3引数の値の差」が1でない場合に誤動作する。

コンパイラの最適化で読み出しが1回になるケースもあるだろうが
最適化オプションで動作が異なるのはデバッグを難しくするだけ。

volatileを使えば、読み出しが2回になることが保証されるだけ。

711 名前:デフォルトの名無しさん mailto:sage [2006/07/31(月) 13:37:43 ]
一般的な双方向リストをマルチスレッドで使うとまずいですか?

new -> next = next;
/* ここでスレッドが切り替わるとか? */
new -> prev = next -> prev;

みたいな事が起きるとうまく繋げないような気がします。
WinAPI を使ってオブジェクトかなにか?を作って排他制御する
必要があるのでしょうか?

712 名前:デフォルトの名無しさん [2006/07/31(月) 13:41:09 ]
問題ないw


713 名前:デフォルトの名無しさん mailto:sage [2006/07/31(月) 15:11:21 ]
>>711
まずい。複数スレッドからappendすると、ノードが行方不明になったりする。
ただ、スレッドセーフな双方向リストにするより、
外部の同期オブジェクトを使ってそのリストへのアクセスを同期化する方が
柔軟。

714 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 06:53:40 ]
volatileですべて解決!!!

715 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 10:44:44 ]
この話では無理w

716 名前:デフォルトの名無しさん [2006/08/01(火) 11:20:51 ]
>>711
問題ない
関数内ではスレッドの切り替えは起こらない

717 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 11:51:13 ]
preemption はいつでも起こりうるでしょ



718 名前:716 [2006/08/01(火) 12:39:23 ]
起こらないでしょ


719 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 12:43:33 ]
>>716
何を根拠に言ってんの?

720 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 12:51:51 ]
ようやくWindowsのメッセージディスパッチのことを理解したばかりのヒトが
それをマルチスレッドだと思い込んでるんでしょう。

721 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 13:19:11 ]
>>716 は、ユーザレベルスレッドしか使った事無い人なんでしょうかね。

722 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 13:23:44 ]
>>716はWin3.1ユーザー

723 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 13:24:48 ]
実装がユーザレベルかカーネルレベルかと、プリエンプティブかコ・オペレーティブかは関係ないだろ。

724 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 13:33:14 ]
関数内では起こらないってのもすごいよな。
普通は全てmainの関数内なんだが。
まあWndProcはまた別だが、それもWinMain内ででGetMessageしてるわけだし。

725 名前:716 [2006/08/01(火) 14:35:50 ]
反省^^


726 名前:デフォルトの名無しさん mailto:sage [2006/08/01(火) 22:51:18 ]
>>723
そこに異論は無いけど、言いたい事は分かるでしょ。

727 名前:デフォルトの名無しさん mailto:sage [2006/08/02(水) 08:14:08 ]
まあ、あれだ。がんがりたまえ(笑)



728 名前:デフォルトの名無しさん [2006/08/02(水) 12:46:56 ]
一般的なのはミューティックスを作る方法なの?



729 名前:デフォルトの名無しさん mailto:sage [2006/08/02(水) 13:49:28 ]
ディスクトップでディスクリプタをミューティックスで保護することを考察

730 名前:デフォルトの名無しさん mailto:sage [2006/08/02(水) 14:34:13 ]
むてふ

731 名前:デフォルトの名無しさん mailto:sage [2006/08/02(水) 14:47:18 ]
ティキストエデタ

732 名前:デフォルトの名無しさん [2006/08/02(水) 15:05:17 ]
www

733 名前:デフォルトの名無しさん mailto:sage [2006/08/02(水) 23:11:34 ]
ヴォラタィル

734 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 08:56:51 ]
コンピゥタァ


735 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 12:30:55 ]
モシ NO=735 ナラバ トベ >>1000

736 名前:デフォルトの名無しさん [2006/08/03(木) 14:38:59 ]
static bool g;

if (!g && g = true) {}

この if ()の中でスレッド切り替えって起こります?
排他処理になりませんか?



737 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 14:54:43 ]
>>736
その g = true というのは本当に g = grue なのか?
それとも g == true の書き間違い?




738 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 14:56:56 ]
あ、俺も書き間違えた。すま。

739 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 15:47:48 ]
>>736
> この if ()の中でスレッド切り替えって起こります?
起こる

> 排他処理になりませんか?
ならん

740 名前:デフォルトの名無しさん [2006/08/03(木) 18:52:39 ]
w

741 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 21:56:53 ]
ちょっと待てよ。C言語だとするとショートサーキットだよな?
!g の結果が false なら g = true は実行されないよな。
true なら実行される。

排他になるんじゃないか?


742 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 22:01:59 ]
ひょっとしたら
!g
がアトミックじゃない処理系もあるかも

743 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 22:02:10 ]
ショートサーキットは関係ない。
!gの評価と、g=trueの間にスレッドが切り替わる可能性があれば、排他として役に立たない。

744 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 22:31:23 ]
アセンブラレベルで考えるんだ

745 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 22:49:20 ]
なんだろ? 書き込み見てると、CPU命令レベルでの挙動に思い至らないのが居るな。
ソースレベルの字面で捉えてコンパイルというのが何なのかまったく知らないよう
に思える。

こんなんで日本のプログラマーのレベルは大丈夫なのか? 小中学生だったら
知らなくても無理は無いのか。

746 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 23:05:44 ]
アセンブラまで降りる必要は必ずしも無いとは思うが
メモリの読み込みと書き出しを同時(atomic)に行うことは
(普通は)出来ないということくらいは知っておく必要がある。

もちろん、プロセッサはそのための命令を(普通は)用意しているが
コストがかかるため、普通にソースを書いた場合
コンパイラはその命令を使ったコードは出力しない。

747 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 23:16:40 ]
えらそうに講釈たれてても

> 同時(atomit)

この一言で台無しだな。



748 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 23:25:35 ]
>>747
お前いらないから

749 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 23:36:58 ]
必死な子がいるなぁ。

750 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 23:39:29 ]
>>747
別のプロセッサに割り込まれないように
lock等で保護してからxchgしたりincしたりnegしたりするけど
それをatomicと言わないとでも?

例えばあるメモリの内容を+1する場合、
「+1する命令をメモリに対して発行する」ではなくて
「プロセッサがメモリを読んで、+1した値をメモリに書き込む」だし。

751 名前:デフォルトの名無しさん mailto:sage [2006/08/03(木) 23:58:41 ]
なに一生懸命説明してるの?

これスレでそんなこと知らない奴なんてあまりいないよ。

俺はただ「atomic」と「同時」って全然違うって言いたいだけなんだが。

まあ俺も atomit とか書いてるようじゃ人のことは言えないわな。(w

752 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 00:03:37 ]
>>751
もう消えてね(^^)

753 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 00:18:24 ]
>>751
ずいぶん必死ですね。

754 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 00:20:13 ]
最近なりを潜めてる、某キティと文体が似てる・・・

755 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 01:02:29 ]
読むのと同時に書かないと壊れるメモリもあるだぜ?

756 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 01:19:47 ]
「atomic」は日本語で言ったら「不可分」ちうことですわ。

757 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 01:23:06 ]
原子力って感じかと思ってた



758 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 03:38:13 ]
分割不可能な最小単位つうことですょ

759 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 03:51:04 ]
つまり、鉄腕アトムは分割不可能と言うことで宜しいか。

760 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 04:08:01 ]
「atomic」には他に「原子の」みたいな意味もあるんですわ。
昔は原子(atom)は物質の不可分な最小単位と考えられていたので。
どっちの意味が先か知らんけどね。

761 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 07:05:02 ]
で、何が言いたいんだ?

762 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 07:11:33 ]
atomic bomb 分割不可能な爆弾

763 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 07:12:41 ]
割ったら被爆しちゃうからね

764 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 07:17:17 ]
>>761
誰でも知ってるような事をちょっと偉そうにしゃべくってみたかっただけですわ。

765 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 07:18:59 ]
被爆と被曝

766 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 07:55:02 ]
>>764
何のために?

767 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 07:57:34 ]
>>760
なに一生懸命説明してるの?

これスレでそんなこと知らない奴なんてあまりいないよ。



768 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 08:37:02 ]
「同時」って書いちゃうヤツ以外はね。

769 名前:デフォルトの名無しさん mailto:sage [2006/08/04(金) 08:45:15 ]
VRAM(昔のやつ)やWRAM(初代Milleniumが採用した奴)を思い出した。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<278KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef