pthread地獄 part 2

2009/12/22(火) 07:45:20
>>164-166
絶対違う。

賭けてもいいぜ。
>>164は32bit環境で、かつ、各スレッドのスタックサイズをデフォルトのままで試してるから。
>>164のような制限として、確かに他の理由もあるが
そんなに少なく制限され、しかもあからさまな差がつく理由なんて一つしかない。
(デフォルトで)スタック10Mの32bitOSで各プロセス最大何スレッド程度作れるか
同じく1MのOSでは各プロセスで計いくつか
ちょっとだけ考えてみな。
2009/12/22(火) 08:05:11
じゃあ Linux のスレッドサイズの由来は何なのさ。
2009/12/22(火) 09:24:51
>>168
1プロセスあたりのスタックサイズを継承すっから
そのデフォルトが由来じゃね?
2009/12/22(火) 09:52:26
linuxのスレッド数の上限が「linuxではスレッド ≡ プロセス」である事に
起因しているという主張は、プロセス数の上限も数百であるという事と同値。
ところがそんな(数百)プロセス数制限はない。
よって、>>164の主張は間違っている。証明完了。

実験だけで終わらせ、真の原因を突き止めようとしないのはB級エンジニア。
2009/12/22(火) 10:34:19
>B級エンジニア。
ただのてーへんだろ?
2009/12/22(火) 13:13:46
>>162
> Linux、psで表示しないだけで内部的には完全にプロセスだよね。

いつの時代の話だw

>>164
7,8年前から性能も大逆転だが?
2009/12/22(火) 13:15:13
閉鎖系ではよくあること。
そっとしておいてやれ。
2009/12/22(火) 19:23:08
>>172
>いつの時代の話だw
違うの?だって隠しプロセスIDを指定してstraceで追うとか出来るよ?
概念的にはともかく実装上はプロセスの延長かと思ってた。
なんか実装上で「ほらここ見ろ」って場所教えてください。
2009/12/22(火) 21:47:53
>>172
つ ttp://www.ibm.com/developerworks/jp/linux/library/l-linux-kernel/

プロセス管理は、プロセスの実行に集中的に取り組みます。カーネルではプロセスは
スレッドと呼ばれ、プロセッサーの個々の仮想化 (スレッド・コード、データ、スタック、
および CPU レジスター) を表します。ユーザー空間ではプロセスという用語が一般的に
使用されていますが、Linux 実装ではこの 2 つの概念 (プロセスとスレッド) を
区別していません。カーネルは SCI を介して、新規プロセスの作成 (fork、exec、または
POSIX (Portable Operating System Interface) 関数)、プロセスの停止 (kill、exit)、
そしてプロセス間の通信と同期 (信号、または POSIX メカニズム) を行うための
アプリケーション・プログラム・インターフェース (API) を提供します。
2009/12/23(水) 00:11:53
>>170
> ところがそんな(数百)プロセス数制限はない。

メモリ量に依存するけど?

http://www.gelato.unsw.edu.au/lxr/source/kernel/fork.c
> max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
2009/12/23(水) 00:27:34
>>176
ここで process と thread に区別はないのはいいよな?

プロセス数とスレッド数の合計は max_threads を越え
られない。また、pthread_attr_setstackaddr() でどう
こうしようがこの制限からは逃れられないので >>167
も的外れ。

これを「プロセス≡スレッドに起因してる」っていうの
は、そんなに言い過ぎかね?
2009/12/23(水) 03:24:34
内部的には完全にプロセスっていうより、
プロセスとスレッドを統一的に扱っているって感じでしょ。
今は。昔は特殊なプロセスとして実装していたけど。
だからsignalの扱いが変だった。

FreeBSDはrforkとpthreadが別フレームワーク上の実装で
もうちょっと整理できないのかと思う。
2009/12/23(水) 10:05:31
組み込みとかでマルチタスキングモニタ書いてた俺から
すると(当然こいつも区別無かったんだが)、Linux 実
装の方がお手軽実装(悪く言えば手抜き)に見える。

それに Linux 側も最近はスレッド≡プロセスの柵から
脱却しつつあるんじゃなかったっけ?
2009/12/23(水) 11:33:40
シッタカ煽りの172が逃亡してしまった
2009/12/23(水) 13:06:48
SunOSとかのLWP使ったスレッドはどうだったの?
Solaris8までは、M:Nだったと言うことはスレッド≡プロセスではないよね。
2009/12/23(水) 15:02:53
Linux だけ特殊だと思えばいいよ。
2009/12/23(水) 15:15:35
>>179
脱却しようと思ったけどやっぱプロセス扱いの方が便利だから脱却やーめた
って感じがする。気のせいかもしれないけど。
2009/12/23(水) 15:19:22
ん、結局、今はスレッドに軽量性というメリットは
無かったりするの?
2009/12/23(水) 16:11:43
あるよ。
カーネル内でプロセスと似た処理していることと、
軽量かどうかは全く関係ない。
2009/12/23(水) 17:00:04
>>185
似たような処理をしているなら似たような重さになるんじゃないの?
なんで速く処理できるの?
2009/12/23(水) 17:26:12
ぶら下がるリソースが違うから。
rforkを勉強してみたら?
2009/12/23(水) 17:39:09
>>187
ありがとう。Linuxではまだ関係ないってことだね。
2009/12/23(水) 17:47:46
SMP 対応前後くらいで thread の扱いも大分違うんじゃ
ないかと思うんだけどどうかね? > 識者

それ以前はユーザプロセス空間内で閉じたスレッド機構
もそれなりにあったと思うんだけど、流石に SMP とな
るとスケジューラの管理下に入れないわけにはいかない
だろうし。

そう考えると Linux とそれ以外では同じ形態を目指し
ていてもアプローチの仕方が正反対なんじゃないか?
>>183 的なのもそこに理由がある気がする。
2009/12/23(水) 17:56:14
>>189
> そう考えると Linux とそれ以外では同じ形態を目指し
> ていてもアプローチの仕方が正反対なんじゃないか?

なにも変らないよ。
2009/12/23(水) 18:54:39
>>189
C10K問題 ttp://www.hyuki.com/yukiwiki/wiki.cgi?TheC10kProblem が提唱された
あたりから、複雑怪奇な割に性能が上がらないM:Nモデルから、単純明快な1:1モデル
へと向かうOSが増えたのは確か。

あと、プロセスとスレッドとを同じように扱うか否かはNUMAみたいなアーキテクチャを
どう考えるのかにもよりそう。
2009/12/23(水) 19:34:54
>>191
面白いね。

FreeBSD はその後に SMPng の作業を完了しているから
現状を見てみたいけど、それぞれの OS が同期を取って
開発されているわけじゃないからどのタイミングで評価
するかってのは難しい問題だな。
2009/12/23(水) 20:01:30
>>191
WebサーバがPC UNIX系の主戦場になったからね。
I/Oセントリックだとカーネルスケジューラが有利。
システムコールの中でスケジュールしたいから。
2010/01/05(火) 22:01:20
めちゃくちゃ古い実装ベースの情報ではあるけど、
www.acme.com/software/thttpd/benchmarks.html
の一番下にある表は、結構面白いとこ突いてるいるように見える。
2010/01/05(火) 22:26:35
>>194
ほほう・・・
2011/01/19(水) 02:40:41
プラズマクラスター効果なしww
http://twitter.com/saramura6/statuses/6688087715352576
2011/01/20(木) 19:08:51
node.jsとか、非同期通信寄りが増えてきたな。
2011/04/07(木) 03:13:05.15
pthread_createで300前後しかスレッドを吐き出せないのだが・・・。
もちろん、pthread_detachを使ってデタッチしてるんだけど、全く増える気配なし。

Linuxの設定を見てみると、システム全体のスレッド上限が9万、ユーザーが4万5千
お手上げ状態です。
2011/04/07(木) 04:00:50.39
アドレス空間が足りないだけ
200198
垢版 |
2011/04/07(木) 04:07:26.75
Stackのサイズを変更したら、すんなり3万2千くらいまで行けました。
どうも、お騒がせしました。
2011/04/22(金) 21:31:00.83
pthread_mutexで複数のスレッドが待ち状態のとき、起床するのは優先度順ですか?
先に待ち状態になった順から起床させれないですか?
セマフォなら待ち順になるのかな
2011/04/26(火) 00:16:55.83
>>201
待ち順にはならぬ・・・ ならぬのだ・・・
2011/04/26(火) 11:49:13.33
カーネルさん「順番は俺の都合のいいようにやるから、
順序を規定したければ自分で管理しろよ。
その代わり、マルチCPUになろうがなんだろうが
俺のやることは今と変わらんから安心しろ」
2011/04/27(水) 02:10:10.39
カーネル△
205名無しさん@お腹いっぱい。
垢版 |
2011/08/31(水) 08:26:04.18
スレッドの同時実行数って決められない?
同時実行数1にして似非RTOSみたいにしたいんだけど
ちなみに各スレッドはsetschedpolicyでSCHED_FIFOにしてるつもりでエラーは返ってきてない
管理者で実行しているし、sched_priorityは1〜5にしてsetschedparamしてます

なにか手順が足りないでしょうか?
自分でセマフォとかで管理するしかないんでしょうか?
2011/09/01(木) 08:57:44.31
うむ、cygwinではpthread_attr系がダミー実装しかされていない
2011/09/01(木) 21:12:56.51
>>205
スレッド作ってコルーチン動かせばいい
2011/09/09(金) 12:37:20.07
>コルーチン動かせばいい
これって具体的には何をすることをいってるの?
何か簡単な方法があるの?
2011/09/12(月) 22:42:44.40
スレッド作った時点でそれってコルーチンだよな
中断再開を管理するスレッドを別に用意しろということか?
2011/09/13(火) 00:33:50.94
いえ、こういう文脈でコルーチンといえば、
・エントリポイントが複数ある
・コードで指定した場所で実行停止が可能な
サブルーチンのことです。
「指定した場所」でCPUを明け渡しながら動きます。

2011/09/16(金) 18:30:28.02
エントリポイントが複数ある ってどういうこと?
2011/09/17(土) 19:37:06.16
哲学者の食事問題を例に取ると、全体で一つのコルーチン。
最初にどの哲学者から食事を開始してもいい。
2011/10/18(火) 04:37:25.13
自前でユーザレベルスレッドを作ればできるってことじゃないのかな?

ready_queue/wait_queueそれからスレッドインスタンスの構造体、
あとはwait(sleep)/act(wakeup)関数を定義すればいい。
もしカーネルの内部構造について知識/技術がある人なら簡単と言えるかも。

大変かもしれんが、スレッド間の排他制御とか不要(最低限)になるから、
元の設計がしっかりしていれば、かえってデバックは楽だったりする。
2011/12/17(土) 12:34:40.08
地獄ではないだろ……
2013/01/17(木) 05:50:17.84
今時pthreadでゴリゴリて、流行らないのかな?
2013/02/11(月) 18:25:18.64
>>215
流行り廃りで避けられるジャンルじゃないだろこれ
代替に何使うつもりだったの?
2013/02/12(火) 00:23:57.14
pthread直ではなく、上位のライブラリ越しにつかうとかじゃない?
2013/02/12(火) 03:14:17.06
pthread獣を召喚するライブラリでオススメなんかある?
219410
垢版 |
2013/02/19(火) 20:34:50.11
>>218 C++11の<thread>とか、Boost::thread とか、OpenMP とか。
2013/06/09(日) 15:26:03.82
先日、他部署を交えて開かれた社内技術交換会でのこと。
先輩は自分が開発担当したあるソフトのプログラミング中に思いついたという
文字列処理の高速化アルゴリズムについて得意気に解説し始めた。
話し始めてしばらくして、隣の部署の人が口をはさんだ。
「それ、有名な番兵のアルゴリズムですよね。ウチでも昔はよく番兵を使いました。
でも番兵はマルチスレッドで使えないという欠点があるので、
今では番兵のアルゴリズムを使うことは禁止してます。
これ使われると発見しにくいバグになって困るんですよねぇ…
ところで今日のお話というのは、
番兵のアルゴリズムをマルチスレッドに対応させるような方法か何かですか?」
そのあと先輩の話は支離滅裂になり、何の技術交換会だったのか
よく覚えていない…
2013/12/06(金) 03:08:00.49
いまさらだけど"Pthreadsプログラミング"を買ってきた
がんばって積読するぞ
222名無しさん@お腹いっぱい。
垢版 |
2013/12/06(金) 09:51:35.50
マルチメディアで番兵使っちゃ駄目なの?
2013/12/07(土) 15:25:25.69
モーティミーディアー
224名無しさん@お腹いっぱい。
垢版 |
2013/12/08(日) 18:03:34.98
中略)
いやいや、●流出事件でも分かった様に叩きスレが伸びるってのは理由が有る訳です。2ちゃんねる運営の金になる。
運営の工作員が自演で火を付けてるわけ、それに乗った一般人が情報出して、その情報溜め込んだ運営の工作員がその情報元にまた煽る。

2ちゃんねるの運営にはそう言う集客方法が有る訳です。
それ系のサイトじゃあ、良く語られてる『プロ固定(プロ名無し)』ですよ。

各板覗いて御覧なさい、必ずあるでしょ?個人対象にした叩きスレッドが、
内容は似たり寄ったりですよ、どのスレッドも。運営の工作員が掛け持ちでテコ入れしてますから(笑
一種の炎上ビジネスなんです。

一般利用者ってのはお手軽に誹謗中傷出来る対象があると、何も考えずに叩くんです。とりあえず多少の正当性みたいなものが有ればいい。
どんな小さな事で良いし、自分が何らかの係わりや知識が有れば尚の事。

日本最大の電子掲示板 2ちゃんねる が板によって専門的に分かれてるってのはそう言う意味でも凄く都合が良いわけです。
各専門分野の関係者が勝手に情報持ち寄って、叩く対象の情報提供者になってくれる・・・

正にカモがネギ背負って毎日飛んで来ては個人の誹謗中傷スレッドに情報投下してスレッド伸ばしてくれてる訳です。
炎上とか本人降臨とかは運営にとってはご馳走。

巷で言われております『ネットイナゴ、無敵の人』は運営と二人三脚な所がありまして、
酷い煽り方のレスは自作自演の運営工作員だったりするんですけど、一般人のですね、例えば関係者や嫉み僻み私怨持ってる様な、
又は何だか良く分からない“正義感”に突き動かされてしまう様な程度の人も誹謗中傷スレッドの叩きの一連の流れを見るとですね。
2ちゃんねる の運営方法の一部になってるんですよ。

ネラーと運営と言うのはお互い共存共生関係に有ると、まぁ、そう言う話なわけです。
(後略
.
2013/12/11(水) 22:58:32.94
番兵使うとマルチスレッドでバグるって、どういうロジックなんだろうか。
226名無しさん@お腹いっぱい。
垢版 |
2017/12/29(金) 07:43:45.56
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

AUQ0EKC298
227名無しさん@お腹いっぱい。
垢版 |
2018/05/22(火) 06:08:23.65
知り合いから教えてもらったパソコン一台でお金持ちになれるやり方
時間がある方はみてもいいかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

1HZYE
2023/09/15(金) 19:16:18.64
めっちゃええ感じやん。
2023/11/20(月) 11:35:48.04
あなたと肩を並べて歩きたいの
230名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 19:57:34.12
著名人が乗っていましたが
231名無しさん@お腹いっぱい。
垢版 |
2024/03/27(水) 20:32:45.41
もっと整理して弱い
グーナー絶頂の順位に変動あり得る)よな」みたいな
2024/03/27(水) 21:54:58.94
なんか思ったより下げない
相変わらずツボガーは話に広がりがなくて実在の居酒屋で喜んでるだけの人エナプ公式グッズのサンダル履いてる状態なの分まで歌う」
レスを投稿する