- 1 名前:名前は開発中のものです。 [2007/03/12(月) 23:09:48 ID:8bV5Boxt]
- どうぞ
- 300 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:37:24 ID:oN9CX2Ee]
- 固定領域でスタックオーバーフローって意味不明。
馬鹿は下手に用語を使うな。
- 301 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 01:39:24 ID:KdpdkeKK]
- 固定領域じゃスタックオーバーフローは起こらんな。
ちょっとボケてた。
- 302 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 02:20:56 ID:ybvN8RFV]
- >>297
リストの配列にすればいいさ リストから一つのオブジェクトだけを探索したいときは遅いままだけど そういうときはあらかじめハンドルなりポインタなり握っておけばいい
- 303 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 07:36:23 ID:HDYBA+tg]
- Javaの場合だけどリストでもなくBlockingQueue<Task>にいれてる。優先度別にqueueも複数ある
queue内のすべてのタスクのupdateと必要な描画処理が20ms以内ならまずまずかな
- 304 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 14:50:39 ID:LzYPF20u]
- >>289みたいなのがいる限りタスクシステム(笑)も安泰だな
- 305 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 14:52:33 ID:nUOoY/JG]
- イテレートの速い順序付けツリーってあるの?
- 306 名前:名前は開発中のものです。 mailto:sage [2007/04/29(日) 15:34:08 ID:tvNJg+l3]
- >>305
順序付けツリーなら C++ の set や map がだいたいそんな感じだろう。 で、イテレートの遅いコンテナなんてあるの?
- 307 名前:名前は開発中のものです。 mailto:sage [2007/05/01(火) 13:07:57 ID:Nbo+fhA7]
- deque?
わかんねw
- 308 名前:名前は開発中のものです。 mailto:sage [2007/05/01(火) 22:39:08 ID:2cazExNO]
- アドレスがばらけるコンテナはキャッシュミスが起きやすい。
ハッシュのコンテナも構築時間を犠牲にしないものはスカスカのテーブルをそのまま辿るしかないな。
- 309 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 14:23:53 ID:pqs4xK60]
- 皆さんのやってるプラットホームはやはりPC?
コンシューマなひと、いなさそうだが・・・
- 310 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 15:27:45 ID:AAlSvZp8]
- それを何故このスレで聞くのか
- 311 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 17:38:15 ID:m1OoG9Xt]
- 一応居るけど
- 312 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 18:08:30 ID:e9oT09wF]
- メガドラやってるよw
あのスレは見てない
- 313 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 19:38:53 ID:X2Bn3rtL]
- コンシューマやってるけど何が聞きたいの
ハードに依存してない部分だしPCとあんまり変わらんよ?
- 314 名前:名前は開発中のものです。 [2007/09/02(日) 04:39:14 ID:OA6cGu0G]
- そうなん?
てっきり、いまだにタスクシステム使ってるのかと
- 315 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 04:49:20 ID:4YT1t12/]
- 君の思うタスクシステムの具体的な実装が
どういうもんか言ってもらわんと答えようがないなあ その通りかもしれないしそうじゃないかもしれないよ
- 316 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 14:53:28 ID:O3956k1d]
- なんかGDGDだなこのスレw
でも、嫌いじゃないので、おいらもGDGDカキコ タスクの良いところってのはその柔軟性だよな。 技術的にはぜんぜんたいした事をしてるわけじゃない。 とくに、このスレではタスク=リストになってるが、別にリストなんて「高度」な 事をしなくても、ただの配列でもまったく問題なく実現できる。 (無論効率は若干落ちるが、即時にデータ起動の並列もどきルーチンが 作れるのでいろんな環境で便利) 唯一凄いと思えるのは、歴史的な経緯かな。 プログラム主体の8bit時代において、 プログラムでデータを管理するのではなく、データで、プログラムを管理(プログラムを選ぶ) すると言う、データ主体の発送が凄かった。
- 317 名前:名前は開発中のものです。 [2007/09/02(日) 16:25:59 ID:OA6cGu0G]
- リストが高度とか、時代錯誤もは(ry
- 318 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 20:53:53 ID:O3956k1d]
- >>316
おいおいw わざわざ「」付で言ってるんだから 比喩に決まってるだろ リストが「高度」な技術と言える程、 タスクの実装に技術はいらないって意味だ ゆとりじゃあるまいし、勘弁しておくれw
- 319 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 22:16:13 ID:UfEehfKc]
- 茶でも飲んで落ち着けw
- 320 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:01:13 ID:O3956k1d]
- うむ、そうするか
∧_∧ ( ´・ω・) ズズー ( つ旦O と_)_)
- 321 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:14:50 ID:O3956k1d]
- せっかくなのでリストを使わないタスクをネタ代わりに投下
てきとーに作っただけなので、コンパイルすらしてないけどなw #define MAX_TASK 256; struct tcb{ void (*proc)(tcb*); //処理関数 int work[10]; //ワーク }; tcb* make((void (*proc)(tcb*)){ //生成 for(int i=0;i<MAX_TASK;i++){ if(TCB[i].proc == null){ TCB[i].proc = proc; return &TCB[i]; } } return null; } void del(tcb* deltcb ){ deltcb->proc = null; } void exec(){ //実行 for(int i=0;i<MAX_TASK;i++){ if(TCB[i].proc != null)TCB[i].proc(&TCB[i]); } } tcb TCB[MAX_TASK];
- 322 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:19:25 ID:O3956k1d]
- void main()
{ //初期化 for(int i=0;i<MAX_TASK;i++)TCB[i].proc = null; //実行 exec() } まあ、リストに対するアンチテーゼと、 こんなに短くてもそこそこ機能するってのが言いたかっただけなんだけどね なんにせよ、タスク(というか、並列動作もどき)ってのは、そんなご大層なものじゃないんで、 もう少し気軽に使えてもいいと思うな。
- 323 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:25:34 ID:4YT1t12/]
- std::vectorとclass Hoge { virtual void Update() = 0; };なら
そのソースの1/3くらいで終わる
- 324 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:34:48 ID:O3956k1d]
- >>322
そうか、よかったな。 ただ、このソースは4KのRAMでも動くんだ。 あと、Cを始めて2日の初心者でも理解できるぞ。 ついでに言えば、C++のない環境でも動く。 別に煽ってるわけじゃなくて、316で書いたように 柔軟性が高いということが言いたいだけなんだ。 シンプルなロジックであるが故の柔軟性 かつ、高い並列性がタスクの凄いとこなんだよな
- 325 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 23:44:30 ID:O3956k1d]
- >ただ、このソースは4KのRAMでも動くんだ。
おっと、タスク数を256にしていたか、4Kじゃ動かんなw まあ、意図はわかると思うんで、適当に読み替えてくだちぃ
- 326 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 00:13:38 ID:OKOrcl0B]
- うーん、まあ好きなように作ってればいいと思うよ
- 327 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 00:50:28 ID:eAiA8cQA]
- >>324
数メガの RAM と C++ コンパイラのある環境で得意げに >>321 みたいな コードを書かないでいてくれるなら文句は無い。
- 328 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 01:11:08 ID:tpNXAe5A]
- >326
いや、無論自分自身は好きに作ってる。 ただ、タスク=LIST管理とかなってきてて、 デザパタとか絡ませる風潮がなんとなくいやなんだ。 もちろん、そういった事を否定するわけじゃなくて、 もっとシンプルなものって事が言いたいだけだよ。 > 数メガの RAM と C++ コンパイラのある環境で得意げに >>321 みたいな > コードを書かないでいてくれるなら文句は無い。 いや、得意気もなにも普通に組むよ。 無論システムとしては組まないけどね。 というか、逆に聞きたいんだけど、並列ではないシステムで(要するにシングル)で組んでて、 一時的に、並列的な挙動が欲しい時って、どうやって組んでるの? まさか、システムに組み込ませるわけじゃないよね? 自分はそういったことが頻繁にあるんで、 そんな中での小技テクとして、上記のようなコードをチョコチョコつかってる。 逆に言うと、タスクなんてその程度のもの。 無論、システム化してべったりって好きだけど、その環境だけで組めるわけじゃないからね。
- 329 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 01:35:46 ID:eAiA8cQA]
- >>328 >>323
- 330 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 01:47:58 ID:OKOrcl0B]
- >というか、逆に聞きたいんだけど、並列ではないシステムで(要するにシングル)で組んでて、
>一時的に、並列的な挙動が欲しい時って、どうやって組んでるの? まさしく>>323
- 331 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:06:52 ID:tpNXAe5A]
- >>329
なるほど、STLに行くのか。 て事は基本的な方向性(末端でタスク生成)は変わらないんだよね? ちなみに自分がかかわったプロジェクトでは、STLはメモリの消費量と、 ガベコレを意識できないプログラマがいて、使えなかった。 厳密には使えたんだが、STLの類は、みんな使うとなったら、とことん使うので、 あっという間に使用量が膨れ上がって、パンクしたw。 (搭載メモリは16Mな) 別の件でSTLはおろか、Cの標準ライブラリすらない環境もあったので、 頼らない組み方が基準にはなった。 確かに、つかえりゃ楽なんだけど、 Window以外は、鬼門なことがままあるからなあ>STL あと、新人に理解させる期間が必要という現実的な問題もあるしなw ま、タスクの話からは若干それたが、 329の環境が、STLが使えるような環境を基準に出来れば、それはいいことだと思うよ。 こっちは中々難しいんで、小技テクでごまかして進むしかないけどw
- 332 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:37:16 ID:eAiA8cQA]
- >>331
関数ポインタと固定ワーク領域(+無理やりキャスト)が仮想関数に 置き換わっただけで、基本的な考え方は同じ。 あと、新人に理解させるって点で言っても、関数ポインタや無理やりな キャストよりも仮想関数のほうが自然で理解しやすいはず。特にアセンブラを やらない今の時代では。 生配列と vector の違いについては今の話にはほとんど関係ないけど、 「それ何年前の話?」ってぐらいの時代遅れ感がする。 vector 出しただけで STL 全体の話になってたり、「ガベコレ」とか言ってる あたりで理解も怪しいし。
- 333 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:54:20 ID:OKOrcl0B]
- >ちなみに自分がかかわったプロジェクトでは、STLはメモリの消費量と、
>(ry もうこの辺って用途によるんじゃないかなぁ 360とかPS3みたいにメモリが贅沢な環境でも切り詰めりしなきゃならない場面もあるから >>321みたいな実装になることもあるよ 勘違いして欲しくないのは、本来やりたいことってのが 大量の「関数と実行コンテキストのペア」を如何に管理するかって話なんだから >>321の例にしても>>323の例にしても、所詮はその実現方法の1つに過ぎないことかな 逆に質問してみるけど 9割が128バイトのサイズのタスクと残りが1024バイトのタスクが混在するような状況下で あなたはどうやって管理するんでしょうか
- 334 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 02:58:58 ID:sckJXuMq]
- まあvectorだと、「削除や挿入などの操作」と「タスクへのポインタの保持」が背反するんだけどな。
321みたいな配列系は、リスト用のポインタ変数すら削りたいほどメモリが逼迫してて、 順番の制御が要らないのならいいんじゃね?
- 335 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 03:27:47 ID:Ic41WPtX]
- >>332
> 関数ポインタと固定ワーク領域(+無理やりキャスト)が仮想関数に > 置き換わっただけで、基本的な考え方は同じ。 なるほど、ここは了解っす。 > vector 出しただけで STL 全体の話になってたり、「ガベコレ」とか言ってる いやいやw、実際使用する段になったら、vectorだけ使用してOKって話にはならんでしょ。 これがだめ、あれがOKって細かく指定するならよいんだけど、そこまでして STL使うプロジェクトには参加したことないなぁ。それに制限するならSTLの意義が薄れてくるし。 (確かに、vector使えるだけでもかなり変わるとは思うけどね) ガベコレについては、話が飛びすぎの感があったんで細かく触れなかったが、 メモリの断片化による、ガベコレの処理落ち、あと、メモリ確保エラーのコトな。 現在のSTLでこれらが一切起こらないことが保証されてるならいいけど、 そうでないなら、対処を知らない人のために、何らかの対策や方針が必要になる。 件のプロジェクトではそれがなくてヤバいことになった。 > あと、新人に理解させるって点で言っても、関数ポインタや無理やりな > キャストよりも仮想関数のほうが自然で理解しやすいはず。 あー、ここは同意。 無理やりキャストよりは、言語使用に沿った概念のほうがいいからね。
- 336 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 03:46:43 ID:Ic41WPtX]
- >>333
基本的には1024byteのタスクを先に生成して(起動するまでSLEEP)から、128byteタスクの生成かな。 途中でどうしても、フルに使わなきゃならない場合は、グループでの生成と削除を行う。 この例だと、8タスクを1グループとして、生成と削除を行う。 大体、こんなかんじっす。
- 337 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 03:48:53 ID:eAiA8cQA]
- >>335
ほんと、胡散臭いな。 vector は許可が無いと使えないのが当たり前だと 思ってそうだし。 標準ライブラリに使用制限を付けるほうが異常でしょ?制限を付けるには 理由が要る。コンテナの動的メモリ確保に問題があって禁止するなら、 アルゴリズム系ライブラリまで "STL" とまとめて禁止することは無い。 C++ の言語仕様にも標準ライブラリにもガベコレは無い。 Boehm GC でも 使ってるの? メモリの断片化がどうのこうの云うなら malloc も new も同じことなんだけど、 それらも使わないことにしてるの? あー。 new が禁止になってるなら仮想関数を使わないのかな?
- 338 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 04:13:34 ID:Ic41WPtX]
- >>337
いや、なにをうさんくさがってるのか知らないけど、 自分の考えや方針と違う人がいるのがそんなに気に入らないのかな? > ほんと、胡散臭いな。 vector は許可が無いと使えないのが当たり前だと > 思ってそうだし。 そんなことは思ってもいないが、STL使用時はメインの人に確認はするよ。 まあ別に、どうでもいいけどね。 > メモリの断片化がどうのこうの云うなら malloc も new も同じことなんだけど、 別にmallocは禁止にしてないけど、ほとんど使わないね。 仮想関数は、c++が使える環境かどうかとメモリ量によるね
- 339 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 05:14:29 ID:eAiA8cQA]
- >>338
気に入らないのは、不確かな理由で複雑なコードを書いてしまうこと。 vector を使えない理由をいろいろと説明しようとしてくれていたけど、その理由の 真偽が胡散臭いってことね。 ただ、これ以上追究する気もなくなった。
- 340 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 09:21:14 ID:y2Xn2ykc]
- >>338
提示したソースが洗練されてるとは言わんが、 ほぼすべてのC環境で動くコードが、 最近の環境に適したコードではないからといって、 胡散臭がられるとは思わなかったw 短くて、美しいソースが正義とか思ってそうだね。
- 341 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 09:50:46 ID:OKOrcl0B]
- >>336
君のやり方って1フレーム中に 毎フレーム256個のタスクがアクティブかどうかチェックするための オーバーヘッドが発生するんだけど(これ自体がそもそも重大な問題なのに) そのメモリの割り当て方はそれを上長させますよ
- 342 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 10:28:10 ID:2Imr3kJv]
- >>340
id:O3956k1d = id:y2Xn2ykc なのはいいとして(レス番が一個ずつずれてるぞ) 胡散臭いと言われてるのはSTLとガベコレを混同してるid:tpNXAe5A = id:Ic41WPtXd の存在自体 であって、君のことじゃないだろう?
- 343 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 11:23:55 ID:VocmouaK]
- つか、なんで>>331でガベコレの話がいきなり出てきたわけ?
- 344 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 11:40:25 ID:ckJtc0Qf]
- >>331
>(搭載メモリは16Mな) ドリーmあqswでfrgtyふじk 胡散臭がってる人とかPCの人には分らんかもしれんがコンシューマだと プロジェクトによってはSTLはおろかC++も使えないことがあるよ。 C++許可でもnew禁止、とかさ。 古い人(ちょっと偉い人)がプロジェクトに混じるとC主体になったりするし。 >>340 正義がまかり通る職種ではないし、主義主張を煽るような発言は荒れるぜー。 プログラマは性格悪いからなw
- 345 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 11:44:32 ID:ckJtc0Qf]
- >>343
C++かSTLにガベコレなんて実装されてたっけ? 記憶にないんだけど。
- 346 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 12:25:32 ID:rM0ce6hj]
- >>344
ゲームじゃないけど RAM128バイトでcコンパイラも無いターゲットで仕事したことあるぞ
- 347 名前:名前は開発中のものです。 [2007/09/03(月) 13:20:45 ID:BR9raoz2]
- /' ! ━━┓┃┃
-‐'―ニ二二二二ニ>ヽ、 ┃ ━━━━━━━━ ァ /,,ィ=-;;,,, , ,,_ ト-、 ) ┃ ┃┃┃ ' Y ー==j 〈,,二,゙ ! ) 。 ┛ ゝ. {、 - ,. ヾ "^ } } ゚ 。 ) ,. ‘-,,' ≦ 三 ゞ, ∧ヾ ゝ'゚ ≦ 三 ゚。 ゚ '=-/ ヽ゚ 。≧ 三 ==- / |ヽ \-ァ, ≧=- 。 ! \ イレ,、 >三 。゚ ・ ゚ | >≦`Vヾ ヾ ≧ 〉 ,く 。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
- 348 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 13:31:16 ID:ckJtc0Qf]
- 128バイト?キーチェーンとかでももう少しありそうなんだが。
つか、8bit以下のCPUならコンパイラよりもアセンブラだろ。 小さいならバイナリを打ち込んだりとか。
- 349 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 22:41:28 ID:l9Qlmw/p]
- ワークがちょびっとしかなくても
ROMが十分あればどうとでもなる
- 350 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 02:25:05 ID:+Mg349f+]
- もちろんアセンブラ
他に選択肢は無いし ちなみに、CypressのCY7C63101か何かだった
- 351 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 22:50:02 ID:CXdTTUEg]
- 時代錯誤のロートルはもう死んでくれ。
お前の糞テクニックなんて今はもう害悪にしかならんよ。
- 352 名前:名前は開発中のものです。 mailto:sage [2007/09/10(月) 00:23:29 ID:QZRbzkCO]
- \|/
/⌒ヽ / ̄ ̄ ̄ ̄ ̄ ̄ | ゜Θ゜)< そうでもないよ。 | ∵ つ \______ | ∵ .| \_/
- 353 名前:名前は開発中のものです。 mailto:sage [2007/09/12(水) 13:27:57 ID:ZYdwKK9S]
- >>346
それってPICだろ・・・・
- 354 名前:名前は開発中のものです。 mailto:sage [2007/09/12(水) 15:51:28 ID:+wMsl3iC]
- >>353
Cypressの8bitマイコンです
|

|