5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:02/11/19 01:15
マルチスレッドプログラミングについて語るスレ。
OS・言語・環境は問わないが、それゆえ明記すべし。

これといったリンク先がないので>>2はブラクラ。

2 :2:02/11/19 01:20
つーか前スレのリンクぐらい貼れバーカ。

3 :デフォルトの名無しさん:02/11/19 01:21
重複してる(;_;)

4 :1:02/11/19 01:29
重複したのでこちらは「マルチタレントプログラミング相談室」となります。

5 :デフォルトの名無しさん:02/11/19 01:30
重複したのでこちらは「マルチのプログラミング相談室」となります。
後の始末はオタな方々が行ってくれるでしょう。

6 :1:02/11/19 01:31
ええと、ここが最初に立ったっぽいので、ここを残して他は削除依頼を
だします。すみませんです。

7 :デフォルトの名無しさん:02/11/19 01:33
前スレのリンクぐらい貼れバカ

マルチスレッドプログラミング相談室
http://pc3.2ch.net/test/read.cgi/tech/997345868/


8 :デフォルトの名無しさん:02/11/19 01:34
スレ立て荒らしの1をアクセス規制するよう要望板に報告してきます。

9 :1:02/11/19 01:36
>>7
ハァ? 逝けや

10 :デフォルトの名無しさん:02/11/19 01:37
>>8
おながいします。

11 :1:02/11/19 01:38
削除依頼出しました。
>>7
ありがとうございます。

12 :デフォルトの名無しさん:02/11/19 01:51
マルチたんハァハァ

13 :デフォルトの名無しさん:02/11/19 01:54
マルチのプログラムを作ってくれるのはこのスレですかっ!?

14 :デフォルトの名無しさん:02/11/19 01:55
ここは削除依頼を出しました。

こちらが本スレになる予定です
http://pc3.2ch.net/test/read.cgi/tech/1037636602/l50

お手数かけてすみません。

15 :デフォルトの名無しさん:02/11/19 01:56
763復活希望

16 :デフォルトの名無しさん:02/11/19 02:26
重複したのでこちらは「マルチすれっど対策プログラミング相談室」となります。
後の始末は削除な方々が行ってくれるでしょう。


17 :デフォルトの名無しさん:02/11/19 02:50
↓この「移転したよ。。。」ってスレ何なの?

18 :デフォルトの名無しさん:02/11/19 03:32
C/C++で、pthread_mutex_lock(...) した関数から抜けるとき、
unlock(...)することを保証するにはどうしたらよいでしょう?
returnで返る前には自分でunlockしていますが、longjmpやthrow
のときにはunlockされないので困っています。

19 :デフォルトの名無しさん:02/11/19 03:34
C++なんかで保証させようと思う方が間違っている。

20 :デフォルトの名無しさん:02/11/19 03:39
>>18
無理。Java使え。


21 :デフォルトの名無しさん:02/11/19 03:47
longjmpされると不可能だが、throwだと「全部catchする」っていう書き方がなかったっけ?

22 :デフォルトの名無しさん:02/11/19 05:11
>21
これ
ttp://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm

23 :デフォルトの名無しさん:02/11/19 05:55
↑ブラクラ

24 :名無しさん@カラアゲうまうま:02/11/19 06:03
>>18
throwならデストラクタは実行される。
つーかそんなの全然マルチスレッドに限った話題じゃない。

25 :デフォルトの名無しさん:02/11/19 10:07
デストラクタじゃだめだと思うけど…
出るときにロック壊しちゃって委員会?

26 :名無しさん@カラアゲうまうま:02/11/19 10:17
ちがう。コンストラクタでlock、デストラクタでunlockするオブジェクトを作
るってこと。
C++のidiomを知らないんならARMから読み直せ。


27 :736:02/11/19 10:21
>>15
>763復活希望

×763
○736

28 :18:02/11/19 10:22
Cでは無理なんですね。
素直にJavaを使って書くことにします。

29 :デフォルトの名無しさん:02/11/19 10:24
AutoLock {
public:
 AutoLock() { lock(); }
 ~AutoLock() { unlock(); }
};

F()
{
 try {
  AutoLock autoLock;
 } catch (...) {
  throw;
 }
}

30 :名無しさん@カラアゲうまうま:02/11/19 10:28
>>27
763==736だがな。

>>28
つーか、スレ違い。

31 :名無しさん@カラアゲうまうま:02/11/19 10:29
>>29
try, catchは要らないはず。


32 :デフォルトの名無しさん:02/11/19 10:34
>>28
そうだぞ。正しいunlock()の仕方なんてスレ違いだぞ。

33 :デフォルトの名無しさん:02/11/19 10:37
>>30
マルチスレッドに限った話題じゃないが、マルチスレッド
プログラミングで必要な話題ではあるだろう。

34 :デフォルトの名無しさん:02/11/19 10:38
なにが「カラアゲうまうま」だあほじゃねーの?
えっらそーに。


35 :名無しさん@カラアゲうまうま:02/11/19 10:40
>>33
すまん、それもそうだ。

36 :名無しさん@カラアゲうまうま:02/11/19 12:12
>>34
カラアゲを冒涜すると頃すぞ。

37 :デフォルトの名無しさん:02/11/20 00:43
また香ばしいのが虚勢をはってるなぁ
736 といい、こいつといい、このスレの伝統ですか?

38 :デフォルトの名無しさん:02/11/20 18:10

俺の脳、処理能力低いので普段はシングル処理ですが、

仕事中だけマルチになります。
2ちゃんねるやったりwinMXでエロやアニメ落としまくったり私用のメールやりとりしたり
女子社員のいろんな妄想したり見つからないようにお菓子食ったり、
その合間に仕事したり


39 :デフォルトの名無しさん:02/11/20 18:19
それはマルチタスクでしょ

40 :デフォルトの名無しさん:02/11/20 19:36
class UnlockHook {
pthread_mutex_t& lock;
UnlockHook(pthread_mutex_t& l) : lock(l) {}
~UnlockHook() { pthread_mutex_destroy(&lock); }
};

...
pthread_mutex_lock(l1);
{
UnlockHook hook(l1);
.... // throw されるかも ...
}
これでhookのデストラクタがちゃんと呼ばれるんだろうけど、
いったいどうやってるんだろう?
ひょっとして、throwってすごく遅い?

41 :デフォルトの名無しさん:02/11/20 20:35
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C++

42 :デフォルトの名無しさん:02/11/20 21:52
41から電波がゆんゆんです。

43 :rubyist@カラアゲうまうま:02/11/21 02:09
ママ:まぁ、パパったら。うふふふふ。
子供:あはははは。
パパ:わっはっは。これは傑作だ。

44 :デフォルトの名無しさん:02/11/21 23:40
>>40
> ひょっとして、throwってすごく遅い?

つーか、重いデストラクタがいっぱい走る状況なら、return だけでもすごく遅いと思うが...。

45 :デフォルトの名無しさん:02/11/22 01:32
>>40
重いかどうかは処理系によるけど、まあ想像つくわな。

でも想像でしかないわけで、最近での処理系でのオーバーヘッドって
どれくらいのもんなのだろう。

46 :デフォルトの名無しさん:02/11/22 11:16
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
static void no_exception() { }
static void use_exception() { try { throw 0; } catch (...) { } }
static void eval(void (*p)()) {
 timeval before, after, r;
 gettimeofday(&before, NULL);
 for (int i = 0; i < 100000; i++) {
  p(); p(); p(); p(); p(); p(); p(); p(); p(); p();
 }
 gettimeofday(&after, NULL);
 timersub(&after, &before, &r);
 printf("%ld.%03ld\n", r.tv_sec, r.tv_usec / 1000L);
}
int main() {
 eval(no_exception);
 eval(use_exception);
 return 0;
}

Athlon 1.4GHz g++ 2.96 -O2
0.004
5.579


47 :デフォルトの名無しさん:02/11/22 13:36
optimized?

48 :デフォルトの名無しさん:02/11/22 13:38
Win32 APIなんだけど、ここの人たちのほうが詳しそうなので教えて君させてください。
InterlockedExchangeとInterlockedExchangePointerってなにが違うんでしょう?

InterlockedExchange
If you are exchanging pointer values, this function has been superseded by the InterlockedExchangePointer function.

InterlockedExchangePointer
If you are exchanging pointer values, this function supersedes the InterlockedExchange function.

意味不明なんですが

49 :736:02/11/22 13:39
よう!
カスども元気か?

50 :デフォルトの名無しさん:02/11/22 15:21
>>48
PVOIDとLONGのサイズが一緒じゃない場合があるからだろ。
M$の64ビット環境では、longは32ビットのままじゃなかったっけ?

51 :48:02/11/22 15:35
>>50
そういう事ですか。さんくす。
64bitだと、intは32bitもしくは64bitでlongも64bitだと思ってました。
そういえば、LONG LONGなんてのがありましたね。

52 :デフォルトの名無しさん:02/11/22 20:49
Ruby以外のsureddoは糞

53 :デフォルトの名無しさん:02/11/22 21:15
sureddo・・・( ´,_ゝ`)プッ

54 :デフォルトの名無しさん:02/11/22 22:35
お前らのマルチスレッドプログラムで、XeonのHyperThreadingで
劇的に速くなった香具師はいますか?

55 :50:02/11/22 23:36
>>51
LONG LONGではなく、LONGLONGだね。

M$の場合は、longが32bitで、__int64が64ビット。
__int128なんかも予約されていたような気がする。

普通の64bitな処理系ではlongが64bit。

56 :デフォルトの名無しさん:02/11/22 23:45
普通って何?

57 :デフォルトの名無しさん:02/11/22 23:51
>>56
LP64という慣習に従った処理系。


58 :デフォルトの名無しさん:02/11/22 23:51
>>56
50=55の脳内処理系のことでしょう。
少なくとも普通じゃない。

59 :デフォルトの名無しさん:02/11/22 23:54
LP64って慣習だったのか・・・

60 :50:02/11/23 01:05
>>58
んじゃ、そうじゃない処理系挙げてみ。
64bit環境なら、SolarisもLinuxもTru64もHP-UXもlongは64bitだよ。

61 :デフォルトの名無しさん:02/11/23 01:28
LP64は規格だよね。SUSの。

62 :デフォルトの名無しさん:02/11/23 01:35
SUSって何?
ローカル規格団体?

63 :デフォルトの名無しさん:02/11/23 02:04
Single Unix Specification

64 :デフォルトの名無しさん:02/11/23 10:12
>>63
THX. unix方面限定ってことね。

65 :デフォルトの名無しさん:02/11/23 10:24
>>54
CPU-boundな処理を2つのスレッドに分けるのはなかなか大変よ。
通常は分けるとしてもCPU-bound(ひとつ)、I/O-bound(ふくすう)
だからねえ・・・

並列アルゴリズムを応用するといっても、CPU数が高々4つだろうから
通信オーバーヘッドが目立つだけかも。

66 :デフォルトの名無しさん:02/11/23 16:43
>>64
いや、SUSとPOSIXは統合された。だから標準に準拠したOSならすべて。

ちなみにWinNT, Win2kもPOSIX互換、と少なくともMSは主張してる。

67 :デフォルトの名無しさん:02/11/23 18:11
なるほど、POSIX規格にLP64というのがあるんですね。
見たことないけど。

68 :デフォルトの名無しさん:02/11/23 23:30
>>67
IEEE std.1003.1-2001 (POSIX V6)では、getconf nameとして
_POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
_POSIX_V6_LP64_OFF64, _POSIX_V6_LPBIG_OFFBIG
が定義された。すべての処理系は、上の少なくとも1つをサポートしなければ
ならない。

69 :デフォルトの名無しさん:02/11/24 02:08
>>68
それぞれどういう意味?

70 :デフォルトの名無しさん:02/11/24 02:18
>>46
Intel(R) Celeron(R) CPU 1.70GHz (RedHat Linux 7.3)
0.007
5.567

AMD-K6(tm)-III Processor (Sun Cobalt Linux)
0.028
12.291

71 :デフォルトの名無しさん:02/11/24 10:23
>>70
コンパイラはそれぞれ何?

72 :デフォルトの名無しさん:02/11/24 10:23
C99 の long long int 型は・・・? long 型と一緒?

73 :デフォルトの名無しさん:02/11/24 12:27
>>68
プログラミング環境  int long ポインタ off_t
_POSIX_V6_ILP32_OFF32  32  32  32  32
_POSIX_V6_ILP32_OFFBIG 32  32  32  >=64
_POSIX_V6_LP64_OFF64  32  64  64  64
_POSIX_V6_LPBIG_OFFBIG >=32 >=64 >=64 >=64


74 :デフォルトの名無しさん:02/11/24 12:27
>>72
longはint以上の長さを持つ。
最低32ビット。

long longはlong以上の長さを持つ。
最低64ビット。

75 :デフォルトの名無しさん:02/11/29 14:10
結局MSの64ビット環境は規格違反という事ね。

76 :デフォルトの名無しさん:02/11/29 14:27
未対応と違反とでは全然違うだろう。

77 :デフォルトの名無しさん:02/11/29 14:53
> ちなみにWinNT, Win2kもPOSIX互換、と少なくともMSは主張してる。


78 :デフォルトの名無しさん:02/11/29 14:54
(´-`).。oO(完全互換と言い切っていない所がミソ。。。)

79 :デフォルトの名無しさん:02/11/29 14:59
NTがPOSIXサポートしてるのは政府の入札を受けるためなんだから
そんな半端なことしては意味がないと思うんだが

80 :デフォルトの名無しさん:02/11/29 15:11
strictly followsと言い切ってるが規格の年度まで述べてるのでセーフ。
http://support.microsoft.com/default.aspx?scid=KB;en-us;q149902
> The POSIX interface on Windows NT strictly follows
> the POSIX 1003.1-1990 standards.
つまり1003.1-1990 comformantであって1003.1:1990 comformant
ではないと。

81 :デフォルトの名無しさん:02/11/29 15:12
間違えた
1003.1:1990→1003.1-2001だ

82 :デフォルトの名無しさん:02/11/29 15:17
間違えはいいとして、コロンはどこから出てきたんだ?

83 :デフォルトの名無しさん:02/11/29 22:58
POSIXってどこまでサポートしてるのか明示しないと意味ないような・・・
linuxも完備してるわけじゃないし・・・

84 :デフォルトの名無しさん:02/11/30 19:25
>>83
LinuxのどこがPOSIXじゃないの?

85 :デフォルトの名無しさん:02/11/30 20:08
LinuxがPOSIX準拠だなんて誰か言ったっけ?
これだから犬厨は・・・

86 :デフォルトの名無しさん:02/12/01 02:02
Unifix Linux (旧称FT Linux)はPosix V4 compliantの認定を受けている。
他のディストリビューションは、
「やればできることは(FTのおかげで)わかったから、わざわざ金かけるまでも
ないや」ということで、認定は受けていないが、ほぼPosix-compliantと言ってよい。

>>85
犬厨って何?

87 :85じゃないけど:02/12/01 02:26
>>85
>犬厨って何?
IME-onでlinuxと打つ。
→ぃぬx

88 :デフォルトの名無しさん:02/12/01 03:21
>>87
はー、なるほど。Winな人が使う蔑称ってことね。

89 :デフォルトの名無しさん:02/12/01 03:23




   ま  た  犬  厨  か  。



 

90 :デフォルトの名無しさん:02/12/01 03:56
そもそも>>83が、何の関係もないLinuxを攻撃したのが
原因だな。

91 :デフォルトの名無しさん:02/12/01 07:53
そもそも>何の関係もない>83が原因だな。


92 :デフォルトの名無しさん:02/12/01 07:59
  ∧_∧   / ̄ ̄ ̄ ̄ ̄
 ( ´∀`) < オナラモナー
 (    )   \_____
 | | |
 (__)_)

93 :デフォルトの名無しさん:02/12/01 11:19
結論: L i n u x 最 強

94 :デフォルトの名無しさん:02/12/01 11:22
結論: i n a x 最 強

95 :デフォルトの名無しさん:02/12/01 13:44
>>94 ハァ?
ウォシュレット最強は TOTO ですがなにか?

96 :デフォルトの名無しさん:02/12/01 14:56
>>95
> ウォシュレット最強は TOTO ですがなにか?

そりゃ当たり前だろ。
「ウォークマン最強は SONY です。」と言ってんのと同じだよ。

ちなみに、シャワートイレ最強は INAX ですが、それが何か ?

97 :デフォルトの名無しさん:02/12/01 15:15
とりあえずおまえらスレ違いです(w

98 :デフォルトの名無しさん:02/12/01 15:17
>>97
ここはウンチスレッドプログラミングについて語るスレですが、何か?

99 :デフォルトの名無しさん:02/12/01 16:36
糞をしながら小便が出るのはマルチスレッド処理だよな?

100 :デフォルトの名無しさん:02/12/01 16:43
>>99
単にバッファが個別にあるだけと思われる。

排出自体は、DMA じゃねーのか ?
CPU からの命令ですぐ止まらないし...。


101 :デフォルトの名無しさん:02/12/01 17:13
DMA = Direct Members of the body Access

ですか?(ちと苦しいか)

102 :デフォルトの名無しさん:02/12/01 18:01
ウォシュレット最強にしてみろ。
浣腸より痛いぞ。

103 :デフォルトの名無しさん:02/12/01 18:24
ぶぁっはははははーーーっ!!
TOTO が最強だって信じてる奴がこの世にいたのか!?
ぶぁっはははははーーーっ!!
ぶぁっはははははーーーっ!!

104 :デフォルトの名無しさん:02/12/01 18:29
>>103
おまいは最強の

     \ 馬 /   \ 鹿 /
               ∩     ∩
               | つ   「,"|
        ヾ∧     !,'っ_ ⊂_,!
      / ・ |ミ    /  ・ ヽつ
     (_'...  |ミ   ▼,__  |
      (゚Д゚; )..|ミ     (゚Д゚ ,)・|  
      (|  .、)|      (|   、)|
       |    |       |   ・・|
       ヽ.._人     ヽ._・ν
       U"U        U"U

だな・・・。

105 :デフォルトの名無しさん:02/12/01 18:41
微妙に荒れてきたげいいんは 93 か?

106 :デフォルトの名無しさん:02/12/01 19:12
>>105
>>85

107 :デフォルトの名無しさん:02/12/01 20:10
>>90
>>91


108 :デフォルトの名無しさん:02/12/01 21:39
何の関係無いのは 83 のレスじゃなくて 83 本人なのか(w

109 :デフォルトの名無しさん:02/12/02 00:08
正直どうでもいい

110 :デフォルトの名無しさん:02/12/08 03:43
前スレはまともだったのにこんな糞スレに成り果てて。
お父さんは悲しいよ。

111 :デフォルトの名無しさん:02/12/08 16:07
お母さんは実家に帰ります。


112 :デフォルトの名無しさん:02/12/08 18:22
俺は家出します。

113 :デフォルトの名無しさん:02/12/09 01:23
そしてお爺ちゃんは餓死。

114 :デフォルトの名無しさん:02/12/09 01:37
俺の布教のおかげでマルチスレッドプログラムが激減したようだな。
よいことだ。

115 :デフォルトの名無しさん:02/12/09 16:35
>>105
× げいいん
○ げんいん(原因)

116 :デフォルトの名無しさん:02/12/09 16:38
↓「おざなり」と「なおざり」の違いを述べよ。

117 :デフォルトの名無しさん:02/12/09 16:45
ウリナラ

118 :デフォルトの名無しさん:02/12/09 22:15
>>115
おまいは 「がいしゅつ」 とかもいちいち訂正するのかと

119 :デフォルトの名無しさん:02/12/09 22:22
>>118
× がいしゅつ
○ きしゅつ(既出)

120 :デフォルトの名無しさん:02/12/09 22:35
>>119
2 ちゃんねるでは

× きしゅつ
○ がいしゅつ

× げんいん
○ げいいん

だからよろしくな。

121 :デフォルトの名無しさん:02/12/09 22:36
ぶぁっはははははーーーっ!!
がいしゅつか間違いだと思っている奴がこの世にいたのか!?
ぶぁっはははははーーーっ!!
ぶぁっはははははーーーっ!!

122 :デフォルトの名無しさん:02/12/09 23:23
>>121
× がいしゅつか間違いだと思っている奴がこの世にいたのか!?
○ がいしゅつが間違いだと思っている奴がこの世にいたのか!?

123 :デフォルトの名無しさん:02/12/10 00:17
Windowsは最新のXPでも、dual processor対応は個々のアプリが
最適化されなければいけないそうですね。

OSXならば、OSX対応アプリならdual processorに標準対応ですな。



124 :デフォルトの名無しさん:02/12/10 00:20
だまれ

125 :デフォルトの名無しさん:02/12/10 00:23
うまれ

126 :デフォルトの名無しさん:02/12/10 00:23
こまれ

127 :デフォルトの名無しさん:02/12/10 00:25
>>123
はいはい、よかったですね。
満足したら、MAC 板に帰ってくださいね。

128 :デフォルトの名無しさん:02/12/10 02:01
OSXって言ってもただのUnixだろ?
シングルスレッドのアプリが自動的に速くなるわけがない。

129 :デフォルトの名無しさん:02/12/10 02:09
ハァ?
Appleの技術力をナメてませんかぁ?
NEXT時代から培ってきた技術は、今、最高の時期を迎えています。
そんなマックをただのUNIX呼ばわりする馬鹿は、逝ってよしってことです。

130 :デフォルトの名無しさん:02/12/10 02:10
でも、結局 Unix のパクリだろ。

131 :デフォルトの名無しさん:02/12/10 02:16
だって、ただのFreeBSDだもん…

132 :デフォルトの名無しさん:02/12/10 02:18
どうせただのぬるぽだろ。

133 :デフォルトの名無しさん:02/12/10 02:19
シングルスレッドのバイナリをソフトで自動的に
マルチスレッド実行するOSなんてあるわきゃない。

134 :デフォルトの名無しさん:02/12/10 02:27
古い68Kアプリをマルチスレッド実行してくれたりして

135 :デフォルトの名無しさん:02/12/10 02:27
>>133
自動的に排他制御と同期を挿入して…なんて確かに不可能だね。

136 :デフォルトの名無しさん:02/12/10 02:32
>>134
マルチプロセスだろ。
そう設計されてない限り、マルチスレッドにする事はできない。

137 :デフォルトの名無しさん:02/12/10 02:47
MAC OS X を馬鹿にするつもりは無いが、
132 と 129 は大いに馬鹿にしたい。

138 :137:02/12/10 02:48
すまん。123。


でも、132 を馬鹿にしたいというのも正しいw

139 :デフォルトの名無しさん:02/12/10 04:15
>>133
「ハードで」ならマルチスレッド化は可能?

140 :デフォルトの名無しさん:02/12/10 05:39
>>139
マルチスレッドの意味わかってるか?

141 :デフォルトの名無しさん:02/12/10 09:08
>>140
2Pとか3Pとか乱交とかそういう意味だろ?
インテルのHTってチムポが2本になるんだよな?

142 :デフォルトの名無しさん:02/12/10 18:39
>>141
その通り。


おまいの脳内においてのみナー。

143 :デフォルトの名無しさん:02/12/11 03:15
>>139
MultiscalerとかSKYとかの事を言ってるなら、
あれも「自動マルチスレッド化」ではない。

144 :デフォルトの名無しさん:02/12/11 03:40
どの処理を並列実行できるか解析して自動的にマルチスレッド化してくれる OS、
いやせめてソースのトランスレータでもあれば随分ありがたいな。

・・・ほとんどあり得ないと思うけど。

145 :デフォルトの名無しさん:02/12/11 08:23
プログラムがソースコードあるいは中間コード形式で配布されるようになれば、
並列最適化しながら実行することもできる・・・

かもしれない

146 :デフォルトの名無しさん:02/12/11 11:12
>>145
まさか。だったらJavaでできてるはず。

147 :デフォルトの名無しさん:02/12/11 16:38
C++でマルチスレッドを扱っているのですが、
クラス関数をスレッドとすることはできないのでしょうか

_beginthread(&LoadCharacterData, 0, NULL);

とやると
error C2276: '&' : 仮想関数のアドレスを取ろうとしました。
と起こられてしまいます

148 :デフォルトの名無しさん:02/12/11 16:46
>>147
static関数にインスタンスのポインタを渡して、そっからメンバ関数を呼ぶ。

149 :デフォルトの名無しさん:02/12/11 17:33
(´-`).。oO(微妙にマルチスレッドとは違う話だな。。。)

150 :144:02/12/11 17:42
> ・・・ほとんどあり得ないと思うけど。

つまり、人間に最適化できるならコンピュータにも最適化させる事ができるという事だ。
誰か挑戦する猛者は居ないか?

151 :デフォルトの名無しさん:02/12/11 22:17
>>145
ネタとしては面白いので
最近の研究事例をひっぱってくれ

152 :デフォルトの名無しさん:02/12/12 01:30
>つまり、人間に最適化できるならコンピュータにも最適化させる事ができるという事だ。

人間もチューリング等価だと?

153 :デフォルトの名無しさん:02/12/12 02:02
つまりたとえば、
for( int i = 0; i<max; i++ ) sum += f(i);
とあったら、(f(x)は数学的関数)

t1:for( int i=0; i<max/2; i++ )
{ tmp = f(i); lock(sum); sum += tmp; unlock(sum);}
t2:for( int i=max/2; i<max; i++ )
{ tmp = f(i); lock(sum); sum += tmp; unlock(sum);}
に自動分解するソフト?

154 :デフォルトの名無しさん:02/12/12 08:22
並行プログラミングの話題か

155 :デフォルトの名無しさん:02/12/12 09:21
自動解析むの話だから、プログラミングは関係無い。

156 :デフォルトの名無しさん:02/12/13 13:02
>>153
そんなのはFortranのコンパイラがとっくにやってる。

157 :デフォルトの名無しさん:02/12/13 14:13
Fortran が最強という事でよろしいか?

158 :デフォルトの名無しさん:02/12/17 04:33
Windowsで、
_beginthreadex とかで指定するスタック領域を増やすのと、
TLS(Thread-Specific Storage)使うのはどっちが効率がいいのでしょうか?

buffer領域の場所を使うバッファにいちいち教えてあげる TLS は
面倒なので、効率が変わらなければ、スタック領域の方が便利なような気がします。

誰かおしえてちょ。

159 :デフォルトの名無しさん:02/12/17 05:42
>>6
マルチスレッドなんだから
スレがいくつか平行に存在してていいじゃないか。

160 : :02/12/17 05:47
>>158

TLS はそういうものじゃないし、効率はスタックの方がいいよ。
そもそも 158 の考えている使い方なら TLS なんかいらないでしょ。


161 :デフォルトの名無しさん:02/12/17 05:57
>Thread-Specific Storage

Lどこー?

162 :デフォルトの名無しさん:02/12/17 07:37
>>158
TLSって

Thread Local Storage

じゃなかったのか?

163 :デフォルトの名無しさん:02/12/17 10:15
呼び名が混じってるな

TSD Thread Specific Data - pthread
TLS Thread Local Storage - Win32

どっちも同じもの。

164 :160:02/12/17 14:02
>>158
160は不親切だったので追記する。
TLS は unix だと signal ハンドラやら、windows だと hookproc の中やら、
現在実行中のスレッドがよーわからん&引数として(スタックフレームで)適当な
データもよう使えんときに、スレッド毎に必要なデータを使うためにある。

マルチスレッドじゃなければ(他に手立てが無くて)グローバル変数を使うような場面ね。
使わないで済むならもちろん使わない方が良い。keep it simple って観点で。


165 :デフォルトの名無しさん:02/12/17 14:07
WindowsではTLS使用数に限界がある場合があるので
可能な限り使わない方がよい

166 :デフォルトの名無しさん:02/12/17 14:16
UNIX板GCCスレによれば、iaのみでだけどTLSサポートだそうな
ただしVCのようなコンストラクタのあるオブジェクトを置けない
制限がどうなっているのかは不明。

167 :デフォルトの名無しさん:02/12/17 14:37
「WANT YOU!!」
昨年、2ちゃんねるにおいてタシロ祭りを巻き起こした
「TIME誌 Person of the Year」投票。
ところが昨年の投票に懲りたのか、TIME誌は投票可能な人物を
あらかじめ設定するという方法に出てきました。これは黙っていられません。
2ちゃんねらーの力で、彼ら米国人が最も無視したい人物
「Yasser Arafat」アラファト議長を表紙に!!
ところがここに邪魔をする一つの謎の集団が突如現れました、
彼等はこともあろうに現イスラエル首相、シャロンに一斉砲撃を開始!
瞬く間にアラファトを蹴落として首位の座に君臨しました。
その強烈な攻撃は、ユダヤ勢力対2ちゃんねらという構図を予想させ、
戦いは一時、圧倒的な差を以てシャロンの完全勝利として終結しつつありました
しかし、我々は諦めずに抗戦。現在、じわりじわりと反撃の炎が立ち上り始めています。
今ならまだ間に合います。
勇気ある君の一票が伝説になる!
http://live.2ch.net/test/read.cgi/festival/1039909795/

168 :デフォルトの名無しさん:02/12/18 00:33
>>165
ハァ?
普通に使ってる限り足りなくなることなんかないだろ。
まさか個々の変数に対して割り当ててるんじゃないよな?

169 :デフォルトの名無しさん:02/12/18 02:54
>>168
Windows2000以降では制限が緩くなったが
それより古いOSでは1プロセスあたり64
TLSを用いるDLLを多用するとまずい

普通に使ってる限り足りなくなることはないということは同意
でも>>158みたいなことをしていれば足りなくなる可能性もある

170 :デフォルトの名無しさん:02/12/18 10:12
>>169
プラグイン方式だったりしてもやばい

171 :デフォルトの名無しさん:02/12/18 10:44
フライング方式に見えて一瞬何の事かわかりませんですた

172 :デフォルトの名無しさん:02/12/26 01:56
printfの遅さで、挙動が変わるような通信アプリ
のデバッグってどうやればよいのでしょうか?

173 :デフォルトの名無しさん:02/12/26 02:01
>>172
それって
前スレとか前々スレとかで見かけた気がするぞ。
ネタか?

174 :デフォルトの名無しさん:02/12/26 02:03
>>173

教えてやってよ

175 :デフォルトの名無しさん:02/12/26 18:31
マルチスレッドと何か関係あるのか?

176 :デフォルトの名無しさん:02/12/26 22:38
たしかに以前のスレで見た気がするな。
ネタじゃねえの。

177 :デフォルトの名無しさん:02/12/30 19:47
作られたスレッドから、さらにスレッド作り出しても問題無いですか?
入れ子みたいにするのマズイですか?

178 :デフォルトの名無しさん:02/12/30 20:14
マズイない

179 :デフォルトの名無しさん:02/12/31 11:54
>>133
OS板のBeO信者はパーヴァシブスレッドっていったかなんだか忘れたが、
できると豪語してたぞ。ただの電波かもしれない。

180 :デフォルトの名無しさん:02/12/31 11:56
>>179
確かBeのウィンドウアプリはデフォルトでスレッド2・3本作ってるって
話を聞いたけどそのことじゃないの。

181 :デフォルトの名無しさん:02/12/31 13:25
ランタイム部分をマルチスレッドにするのは別に難しい事じゃないと思われ。
っていうか、それで速度的に有利になる状況というのがあんまり考えられないけど。

182 :デフォルトの名無しさん:02/12/31 16:19
>>180
MFCだってMTでコンパイルすればウインドウくらいは
そうなってんじゃないの?

183 :デフォルトの名無しさん:02/12/31 16:35
/MT でって事?  ・・・・・こりゃ晒し上げかな?

184 :デフォルトの名無しさん:02/12/31 20:18
COMなら勝手にスレッドを生成するが

185 :デフォルトの名無しさん:02/12/31 20:23
>>182
C Runtime が MT Safe になるだけ。

186 :デフォルトの名無しさん:03/01/01 07:18
NTのアプリだと常に2本のスレッドが生成されるんじゃなかった?
たしかWin32マルチスレッドって本に書いてあった。

187 :デフォルトの名無しさん:03/01/01 07:38
>>186
それはOS側のメッセージディスパッチャ内部で起動されるスレッドの
話であって、アプリがマルチスレッド化される話とは別。
つか、タスクマネージャでスレッド数見りゃ分かるやん。

188 :デフォルトの名無しさん:03/01/06 23:10
>>180
そうやって複数のスレッドをいきなり立てたって、それぞれを何に使うんだ?

189 :デフォルトの名無しさん:03/01/06 23:16
真にアクティブなオブジェクトとして、それぞれのオブジェクトが
活動するのですよ。

190 :デフォルトの名無しさん:03/01/07 00:59
プログラム中のどのバイナリコードとデータ構造がオブジェクトかが、判別がつく
と言うのか?
どうやって?

191 :デフォルトの名無しさん:03/01/07 01:04
電波発言は板違いです★

192 :デフォルトの名無しさん:03/01/07 03:20
Win32ですが、クラス内で

public:
 static void Thread(void*);

とスレッド関数を作って内部で呼び出しても大丈夫でしょうか?

193 :192:03/01/07 17:36
パケットモニタソフトを作っているのですが、
ネットワークアダプタが複数ある場合、アダプタ毎にWSARecvするので
マルチスレッドを考えてるのですが、この場合マルチスレッドは必要ないでしょうか?
複数アダプタが検出された場合、クラスラッピングしておけば用意に必要本数ができるので上記の質問をしたのですが
何分知識不足で的外れな質問かもしれません・・

後、和書か訳本でマルチスレッドのお勧めの本とかありましたら宜しければ教えてください。<(_ _)>

194 :デフォルトの名無しさん:03/01/08 07:37
>>192
VC++なら大丈夫。

195 :IP記録実験:03/01/08 22:22
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

196 :デフォルトの名無しさん:03/01/09 00:42
>>73

     *  ※ ☆  ※   ※   ※  ☆ ※  *
    * ※ ☆ ※   ※ ☆ ※  ※ ☆ ※ *      
   * ※ ☆ ※  ※ ☆  .☆ ※  ※ ☆ ※ *
  * ※ ☆ ※ ※☆     ☆※ ※ ☆ ※ *
  * ※キタ━━━━━(゚∀゚)━━━━━ !!!※ *    
  * ※ ☆ ※ ※☆     ☆※ ※ ☆ ※ *
   * ※ ☆ ※  ※☆  .☆※  ※ ☆ ※ *   
    * ※ ☆ ※   ※ ☆ ※  ※ ☆ ※ *   
     *  ※ ☆  ※   ※   ※  ☆ ※  *


197 :デフォルトの名無しさん:03/01/09 01:03
>>315
どうせネタだし

198 :デフォルトの名無しさん:03/01/09 01:21
AA貼り付けそうな予感


199 :デフォルトの名無しさん:03/01/09 01:34
>>443
できないです>責任逃れ

200 :デフォルトの名無しさん:03/01/09 02:09
                   /\        /\
                   /:::::::ヽ____/::::::::ヽ、
                  丿 ::.__  .:::::::::::::  __  ::::ヽ_
                 / /。 ヽ_ヽv /: /。ヽ  ::::::ヽ
 -┼-   丿~~~|     / / ̄ ̄√___丶  ̄ ̄\  ::::|            ■ ■
 -┼-   /~~~~/ ━━━ | .:::::::::: / / tーーー|ヽ     ..::::: ::|━━━━━━  ▼ ▼ 
  .|       丿      | .:::::.  ..: |    |ヽ        ::|            ● ●
                | :::    | |⊂ニヽ| |      :::::| \
              / /| :    | |  |:::T::::| !      .::| \ \\
             / / \:    ト--^^^^^┤      丿 \\\ \\\

                      お、大阪・・・・   

201 :デフォルトの名無しさん:03/01/09 03:01
こないだの2ちゃん敗訴で日本で大規模な匿名掲示板を運営することは事実上不可能になってしまったからなぁ


202 :デフォルトの名無しさん:03/01/09 03:47
x-beat.comですた。

203 :デフォルトの名無しさん:03/01/09 12:46
エロ系の発言っていうより、炉利だろおめー

204 :デフォルトの名無しさん:03/01/09 17:59
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

205 :デフォルトの名無しさん:03/01/10 10:45
>>28
違います。判決は訴状送達の翌日(初日不算入の原則)からとしてます。

206 :デフォルトの名無しさん:03/01/10 11:14
ビビる大木ってホントつまんないよな
面白くないってだけじゃなくて嫌悪感を憶えるよ
はたして大木目当てでチャンネル合わせる香具師なんかいるのか?
石橋もパクリばっかで中身ないけど
大木も負けず劣らずつまらん
こんなのは全然別の仕事定年までして
からくりビデオレターくらいなら出してやってもいいが
わざわざ金払って画面に出す意味がワカラン
事務所はコイツのどこが面白くて契約したんだ?
下積みテキトーにやれば芸無しが画面に出れるという
前例を作ったらいかんよ
あんなの一生前説レベルだろ
それでも客が不機嫌になる弊害は避けられない

207 :デフォルトの名無しさん:03/01/10 12:00
ともあれ、
2ch の インターネットイノベータ・インキュベータ としての役割は終焉した。

昔は井戸端会議の戯言として(いわゆる”便所の落書き”として)失笑されていたのに
今では規模的に(判例でも)”社会に影響を与えるメディア”として扱われる存在になった。

つまり、ホントは昔から違法性はあったんだけど目立たなかっただけ、ってこと。
⇒あまりにも 公序良俗 からかけ離れたサイト、それが 今も昔も 2ch の実態。

208 :デフォルトの名無しさん:03/01/10 12:29
1chみたいにログ流出だけは避けてくれればとりあえずはいいかなと。
しょうがないでしょう、このご時世。

209 :デフォルトの名無しさん:03/01/10 13:22
キニシナイ

210 :デフォルトの名無しさん:03/01/10 17:11
かちゅがいつの間にやらNGワード対応になっとる…知らんかった。

211 :デフォルトの名無しさん:03/01/10 23:31
警察、裁判所の世話になる書き込みをしなきゃいいだけの話だろ
IP記録する事で基地外の書き込みが減るだろうから、なにも困る事はないだろう?

212 :デフォルトの名無しさん:03/01/10 23:39
全ての板ってことっすか?

213 :デフォルトの名無しさん:03/01/11 00:55
今回の件で言論の自由さえも脅かされることになるかも
誰も何も言えない時代が来そうな伊予柑

214 :デフォルトの名無しさん:03/01/11 01:04
匿名掲示板の意味を履き違えてる人が多くて萎える。

215 :デフォルトの名無しさん:03/01/11 10:27
腐れはおもしろいときとつまらないときの差が激しいな。

216 :デフォルトの名無しさん:03/01/11 11:00
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

217 :デフォルトの名無しさん:03/01/11 11:52
名誉毀損は事実であるかどうかは関係ないよ
気をつけてね

218 :デフォルトの名無しさん:03/01/11 12:28
今までもIPが割れることなんか気にせずカキコしてたからどでもいい。
そのうちチャンとチョンには宣戦布告しなきゃならんと思ってた。

219 :デフォルトの名無しさん:03/01/11 13:28
わからないが、IDからIPを抜くらしいな。
まぁ、ひろゆきが実際そういうことしてたとは思えないが。


220 :デフォルトの名無しさん:03/01/11 13:52
┨←なんでこれ付けないの?→┠

221 :デフォルトの名無しさん:03/01/11 16:40
残念ながら、2chは匿名性以外にも存在価値ができてしまったインターネットです。


222 :デフォルトの名無しさん:03/01/11 16:49
意見を聞いてもらうために「次スレたってないようなのでこちらに」は
 
 やめろ。

223 :デフォルトの名無しさん:03/01/12 00:51
別に今まで通り書き込みは減らないよ

せいぜい厨や変なこぴぺが減るぐらいで議論はなくならない。

別に変にビクツク事ないじゃん。


224 :デフォルトの名無しさん:03/01/12 01:02
あと5分以内やね(^_^;)6億

225 :デフォルトの名無しさん:03/01/12 03:40


226 :デフォルトの名無しさん:03/01/12 11:09
( ゚Д゚)空気読めよ、山系!

227 :デフォルトの名無しさん:03/01/12 11:10
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。

二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm

ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。


228 :デフォルトの名無しさん:03/01/12 19:46
> ちなみにWinNT, Win2kもPOSIX互換、と少なくともMSは主張してる。

229 :デフォルトの名無しさん:03/01/12 20:30
コピペ?



230 :デフォルトの名無しさん:03/01/12 20:34
620 と 623 は別人ですが何か?(w

いや、ごめん。どうせループだから、公開トリップ使って遊んだだけ。本当にごめん。

231 :デフォルトの名無しさん:03/01/12 20:43
ハソコン初心者だがアケ板見れるけど?

232 :名無しさん@XEmacs:03/01/12 21:41
>>193
> マルチスレッドを考えてるのですが、

すればいいじゃん。その方が自然だし。

233 :山崎渉:03/01/13 18:29
(^^)

234 :デフォルトの名無しさん:03/01/13 22:19
既出です

235 :山崎渉:03/01/15 17:53
(^^)

236 :デフォルトの名無しさん:03/01/18 08:18
山崎渉は逝ってよし!!
http://piza.2ch.net/test/read.cgi/comic/960295739/

237 :デフォルトの名無しさん:03/01/22 01:53
何課あちこちのスレでスレと関係無いカキコが多いなー

238 :デフォルトの名無しさん:03/01/23 14:57
NullPointerException が発生したら 「ぬるぽ」 と出力するようにしますた。

239 :山崎渉:03/01/23 20:11
(^^)

240 :名無しさん@XEmacs:03/01/25 14:43
>>238
「もうぬるぽ」にしろ

241 :デフォルトの名無しさん:03/01/25 14:45
>>238 >>240
ガッ

242 :デフォルトの名無しさん:03/01/27 00:53
HTA(JScript)でActiveXコンポーネントを利用して
ダウンローダを作ろうとしてます。

IEコンポーネントにURLを渡してhtmlファイルをDLすると
大量のURLがDL対象だと時間がかなりかかってしまいます・・。

そこで、複数のURLを配列に入れて、その配列を引数で渡したら
マルチスレッドで、それらのページ(画像とかじゃなくhtmlファイル)を
うりゃ〜っと高速DLしてくれるようなActiveXが作りたいのですが、
何をどうしていいのやら・・。

・このActiveX作成に最適な言語
・参考となりそうなサイトor書籍
・ヒント全般
・答え

など、教えていただけないでしょうか?

243 :デフォルトの名無しさん:03/01/27 00:57
> うりゃ〜っと高速DL

( ゚д゚) ポカーン

244 :デフォルトの名無しさん:03/01/27 00:58
OpenIrvineのソースでもみれば?

245 :デフォルトの名無しさん:03/01/27 01:37
マルチスレッド化するだけで劇的に速くなると思ってるのだろうか?
レスポンス待ち時間の分くらいしか速くならないのに。
むしろ、コネクション数をうまく調整しないと却って遅くなるぞ。

246 :デフォルトの名無しさん:03/01/27 02:35
CPU8個積んでますが何か?

247 :デフォルトの名無しさん:03/01/27 02:58
>>246
だから何?

248 :デフォルトの名無しさん:03/01/27 03:11
>>246
それで何?

249 :デフォルトの名無しさん:03/01/27 03:15
>>246
つまり何?

250 :デフォルトの名無しさん:03/01/27 06:17
>>246
すると何?

251 :デフォルトの名無しさん:03/01/27 08:51
>>246
ならば何?

252 :デフォルトの名無しさん:03/01/27 10:57
>>246
ぬるぽ何?

253 :デフォルトの名無しさん:03/01/27 14:06
>>246
御何?

254 :名無し@沢村:03/01/28 01:32
>>246
呼んだ?

255 :デフォルトの名無しさん:03/01/28 03:20
>>246
無効の竹垣に竹立てかけたのは竹立てかけたかったから?

256 :デフォルトの名無しさん:03/01/28 14:22
>>246
256ゲットですが何か?

257 :デフォルトの名無しさん:03/01/28 22:33
>>246
ひざまずけ、命乞いをしろ?

258 :名無し@沢村:03/01/28 23:58
>>246
MUTEXマンセー

259 :デフォルトの名無しさん:03/01/29 11:33
このスレは今から、
>>246に取りあえずレスするスレ」
になりますた

260 :デフォルトの名無しさん:03/01/29 12:30
>>246
259 が 246 に対してレスしてないよ?

261 :デフォルトの名無しさん:03/02/11 15:22
gcc2.95.2(g++)使ってマルチスレッドプログラミング( in Linux or Solaris)
basic_stringってthread-safe?


262 :デフォルトの名無しさん:03/02/11 16:35
ソース見ればいいのに
つかstd::でスレッド安全性を考慮したものってあるのか?

263 :デフォルトの名無しさん:03/02/12 00:53
ソースなんか見る必要はない
headerみれば乗ってる。
mapやvectorはスレッドセーフにできそうだが



264 :デフォルトの名無しさん:03/02/12 01:28
ヘッダもソースの一部かと・・・
まだCの癖が抜けてないのかな

265 :デフォルトの名無しさん:03/02/12 02:34
>>264
挿入や削除ですぐ反復子が無効になるSTLをどうやったらMT-safeにできるのか
考えてみてくれ。現在並みの性能要件と機能性を満たした形で、
本当にできると思ってるの?
例えばthread Aとthread Bで同じコンテナインスタンスの反復子を
それぞれいじくっても平気か、ということだ。



266 :デフォルトの名無しさん:03/02/12 21:04
>>265
もちつけ。
>>264がいいたいのはそういうことでは無いと思われ。

267 :デフォルトの名無しさん:03/02/16 19:07
メインスレッドがBeginPaint()を実行して
サブスレッドがGetDC()を実行して
サブスレッドがGetDC()を実行しても
いいのでしょうか?

これらのAPIは、裏で排他処理をしていますか?

それともプログラマが排他処理をするべきですか?

268 :デフォルトの名無しさん:03/02/16 19:27
>>267
Win32と仮定するが、オブジェクトによっては、それを作成した
スレッド以外のスレッドからのアクセスを禁止しているものがある。
通常は明示されているが、それぞれについて調べるしかない。

記述がない、確証がない、バグの原因になりそうならば、
排他するしかないだろう。

269 :267:03/02/16 20:16
>>268
Win32です。

質問が下手だったです…
えと、メインスレッドではWM_PAINTに応答を
しています。
ワーカースレッドで計算処理をしています。
この計算処理をすぐに表示したいときに
どうしようかなと…

ワーカースレッドでGetDC()をしようと思った時に
メインスレッドがWM_PAINTに応答しているかどうか
チェックするべきなのでしょうか?

私の勝手な予想だと、BeginPaint()がロックしているので
GetDC()が少しの間待機していて、EndPaint()が終了したら
GetDC()の待機が解けてGetDC()が成功するのでは…と
思っています。

ワーカースレッドが複数あったら、GetDC()の
取り合いが起きそうだけど…あっていますでしょうか?

270 :デフォルトの名無しさん:03/02/16 20:27
GetDCとマルチスレッドの関係について調べたか?
調べてからにしてくれ。

271 :267:03/02/16 20:38
>>270
出直してきます…

272 :デフォルトの名無しさん:03/02/16 21:10
ワーカースレッドで表示まで一緒にやらせようってのがそもそも

273 :デフォルトの名無しさん:03/02/16 22:33
> メインスレッドがWM_PAINTに応答しているかどうか
> チェックするべきなのでしょうか?

応答してないような時にはきっと、描画なんかしてちゃいかんのだろうな。

274 :デフォルトの名無しさん:03/02/16 22:48
>>267
取りあえず
http://msdn.microsoft.com/library/en-us/vcsample98/html/_sample_mfc_mtgdi.asp
辺りが参考になるかもね。


275 :267:03/02/18 21:41
ヘルプのマルチスレッドのところ読んできたよ…
>To enhance performance, access to
>graphics device interface (GDI) objects
>(such as palettes, device contexts, regions, and the like)
>is not serialized.

もしやるとしたら、自分で排他処理をする必要があるのね…

おれ、BeginPaint()やGetDC()で得るデバイスコンテキスト(DC)って
GDIオブジェクトとは別だと思ってた
ペンとかブラシとかのグループとデバイスコンテキストのグループと

>ワーカースレッドで表示まで一緒にやらせようってのがそもそも

MsgWaitFor系の関数でメインスレッドで処理をするのでしょうか?
だったら自分の質問Tってかなり変だったのかな…

276 :デフォルトの名無しさん:03/02/18 21:50
描画は単一のスレッドでやったほうがいいと思うズラ

277 :デフォルトの名無しさん:03/02/19 01:27
>>275
> >ワーカースレッドで表示まで一緒にやらせようってのがそもそも
の続きは
「マルチスレッドにする意味がない。」

> MsgWaitFor系の関数でメインスレッドで処理をするのでしょうか?
> だったら自分の質問Tってかなり変だったのかな…
メインスレッドとワーカースレッドでどういう情報をどの程度やりとりするか
によると思うが。ワーカーからなにか能動的にメインに投げる必要があるなら
イベントループに組み込むだろうし、そうでなくて単に途中経過を脇から取り
出すだけなら(CriticalSectionで保護して)変数を共有するだけで済むかも知
れないし。


278 :デフォルトの名無しさん:03/03/13 17:04
こまれ

279 :デフォルトの名無しさん:03/03/28 04:45
ゴマドレ

280 :デフォルトの名無しさん:03/03/28 19:28
保守アゲ

281 :デフォルトの名無しさん:03/04/02 16:17

>error C2664: '_beginthread' : 1 番目の引数を 'void (void *)' から 'void (__cdecl *)(void *)' に変換できません。 (新しい機能 ; ヘルプを参照)
> スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。


vc6でこのようなエラーが出ました。
で、関数なのですが、テンプレートなのです。

template < typename TYPE > void __cdecl Thread( void* p ){}

main()
{
   ::_beginthread( Thread< bool, bool >, 0, &thread );
}

テンプレートは使えないのでしょうか?

282 :デフォルトの名無しさん:03/04/02 16:18
bool がひとつ余計でした

283 :デフォルトの名無しさん:03/04/03 02:00
質問なのですが256MBの領域を確保して、それを0で初期化するルーチンを
高速化しようと思い、2つのスレッドで半分ずつ初期化しようとしています。

しかし、成功するときも多いのですが、5回に1度くらい、WaitForSingleObject()で
スレッドの終了を確認できず固まってしまいます。
どこが悪いかご教授いただけないでしょうか?

Windows2000 Pro, Athlon MP 1900+ * 2 の環境です。

284 :283:03/04/03 02:01
char *bmp_table_smp[4];  // 分割して初期化するときの先頭ポインタ
int bmp_table_smp_size;  // 個々のサイズ

void *BmpTableInitSMP(void *id) {
  memset(bmp_table_smp[(int)id],0,bmp_table_smp_size);
  return 0;
}
void BmpTableClear(void)
{
  HANDLE pt[4];      // スレッドのハンドル
  int size,max_thread = 2;

  size = BMP_TABLE_SIZE*sizeof(BMP_TABLE);
  bmp_table = (BMP_TABLE*)malloc( size );
  
  bmp_table_smp_size = size / max_thread;
  if ( bmp_table_smp_size * max_thread != size ) { printf("Size is odd!\n"); exit(0); }

  for (i=0;i<max_thread;i++) {
    bmp_table_smp[i] = (char*)bmp_table + bmp_table_smp_size*i;
  }
  for (i=0;i<max_thread;i++) {
    pt[i] = (HANDLE)_beginthread( (void(__cdecl *)(void *))BmpTableInitSMP,0,(void *)i);
  }
  for (i=0;i<max_thread;i++) {
    WaitForSingleObject(pt[i], INFINITE);
    printf("pt[%d] thread end.\n",i);
  }
}

285 :デフォルトの名無しさん:03/04/03 03:01
>283
分割したら遅くなると思うが、、、
いまどきはCPU2つ以上が基本なのか?

286 :デフォルトの名無しさん:03/04/03 03:20
void *BmpTableInitSMP じゃなくて
__cdecl void BmpTableInitSMP では。

287 :283:03/04/03 03:22
>>285
1CPUだと256MBの初期化に0.50秒かかるのですが2CPUだと
0.43秒ぐらいになります。何度も呼ばれるので少しは効果が
あると思って。それにP4とかはHTがあるのでひょっとして
効果があるかも。

288 :デフォルトの名無しさん:03/04/03 03:40
自業自得

289 :283:03/04/03 04:07
beginthreadex()を使うように変更したら
まったく固まらないようになりました。
お騒がせしました。

何が違うんだろ・・・?

290 :デフォルトの名無しさん:03/04/03 04:12
クローズしたスレッドハンドルを操作したら
どうなるか想像もできないのか
コードも汚いしスレッド以前の問題だ

291 :283:03/04/03 05:26
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt__beginthread.2c_._beginthreadex.asp
MSDNに_beginthreadexを使え、と書いてあった。

> _beginthread が作成したスレッドの終了が早すぎると、_beginthread の呼び出し元に返されるハンドルが無効となる可能性や

292 :デフォルトの名無しさん:03/04/03 06:13
>>291
MSDNくらいよく読め。
基本だろ。

293 :デフォルトの名無しさん:03/04/03 09:36
なんだライブラリのバグか。

294 :デフォルトの名無しさん:03/04/03 10:30
>>293
バグではないのだが


295 :デフォルトの名無しさん:03/04/03 11:51
>>294
この場合、_beginthreadと_beginthreadexの動作の違いは何故?

296 :デフォルトの名無しさん:03/04/03 12:11
_beginthread っつうのは要するに、スレッドが終了されるとスレッドハンドルを
勝手に CloseHandle() するんだろ。

297 :デフォルトの名無しさん:03/04/03 16:57
HT-P4では速くならんと思う
MMXでも使ったほうがよくないか?

298 :デフォルトの名無しさん:03/04/03 20:30
0fillごとき最適化してどうするよ。
どうあがいてもバス速度がネックになるわけだし、
気にするだけ無駄だって。

299 :デフォルトの名無しさん:03/04/03 21:50
何度も呼ばれるって言ってんじゃん

300 :デフォルトの名無しさん:03/04/03 23:36
バス速度がネックになるから何度やっても同じっしょ

301 :デフォルトの名無しさん:03/04/04 01:36
>>281
cppllのログかどこかで読んだだけでしかとは覚えてないのだけど、
VC6はそういうテンプレートを正しく処理できないそうだ。

template < typename TYPE > void __cdecl Thread( void* p, TYPE dummy){}

とかいう風にダミーの引数を持たせて回避するんだったかな???
でもこの場合にそんなことしたらますます駄目だし…、

そうだ!こうやっておいてキャストすればうまくいったりしない?
template < typename TYPE > void __cdecl Thread(TYPE* p){}

302 :デフォルトの名無しさん:03/04/04 11:01
>>300
ベンチ取ってから物言え

303 :デフォルトの名無しさん:03/04/04 21:51
>>302
そういうウザいネタはアセンブラスレでやってね。

304 :デフォルトの名無しさん:03/04/04 22:45
ハァ?

305 :デフォルトの名無しさん:03/04/05 07:21
>>304
そういうウザいネタはハァ?スレでやってね。

306 :デフォルトの名無しさん:03/04/05 08:41
しかしアセンブラ以外ではベンチはいらんのですか
そうですか


307 :デフォルトの名無しさん:03/04/05 09:28
303は一生バブルソートでも使ってろ

308 :デフォルトの名無しさん:03/04/05 18:05
まあ、最適化でバス速度を超える速さでメモリアクセス出来たら奇跡だよな。

309 :名無しさん@XEmacs:03/04/05 19:16
マルチスレッドで並列に書き込んだら、キャッシュ乱れてバス帯域有効に使えんわな。
CPU特化memset, loop unrolling, word/cache alignmentが王道で、スレ違いだわな。

freeの速いmemsetたくさん転がってるよ。sizeも固定みたいだから選択肢たくさんあるよ。

310 :デフォルトの名無しさん:03/04/06 19:08
つか、実際に多少なりとも速くなっているのに、バスが云々、と
言って取り合いもしないのは甘ちゃんだな、てめーら。

311 :デフォルトの名無しさん:03/04/06 19:43
速くなってるって、、、本当に速くなってるの?計測の方法は正しい?
283でてこーい。

速くなったとして、どういう理由なのかはちょっとだけ知りたいかも。
ただ、キャッシュ込みのバス調停は、アーキテクチャに依存しまくりなので
一般的な結論を得ることは難しいかも。

312 :デフォルトの名無しさん:03/04/06 20:58
個人的見解だと、メモリ共有アーキテクチャの場合は多プロセッサで寄ってたかって
memset するのは効率的でないと思う。
別のアプローチとして、MMX を使ったら memset の 114.6% の速度になった。
(Athlon XP + DDR-SDRAM)

313 :デフォルトの名無しさん:03/04/07 14:35
>>309
最近のCPUにはキャッシュ制御系の命令もあるから、キャッシュ汚染の問題は
回避できるかと。(そうしたところで速いかは知らんが)

314 :デフォルトの名無しさん:03/04/13 06:28
今時のAT互換機だと、キャッシュはCPU側にしかないからこの場合のプロセッサ間のキャッシュ汚染の心配は無いんじゃないの?
2CPUで速くなる理由としては、マルチタスクOSでは他のタスクを実行する時間もあるわけだし、1CPUではメモリバスの書込みサイクルをフルに使っていないんだと思う。

P4-HTはパイプラインと実行ユニットにアイドルが発生するプログラムどうしを並列して食わせるから速くなるわけで、0fillだと速くならないと思われ。
キャッシュも汚染するし。


315 :デフォルトの名無しさん:03/04/13 11:46
同じCPUで実行しちゃうと、
cacheのentryの奪い合いが始っちゃうと思われ

316 :デフォルトの名無しさん:03/04/14 13:17
bool Thread::begin()
{
 if (handle_ && WaitForSingleObject(handle_, 0) == WAIT_TIMEOUT) {
  // Error: 前のスレッドがまだアクティブ
  return false; 
 }
 if (handle_) {
  // 前のスレッドは終了しているのでハンドルを閉じる
  CloseHandle(handle_);
 }
 // 新しいスレッドを生成する
 handle_ = (HANDLE) _beginthreadex(.....);
 return handle_ == NULL ? false : true;
}

このようにして、最初の begin() 呼出しで立ち上がったスレッドが
アクティブである間は、2度目以降の begin() の呼出しをブロック
したいと考えています。

そこでなんですが 2度目の begin() 呼出しの時点で最初のスレッドが
まだ生成されておらず結果 WaitForSingleObject が WAIT_TIMEOUT
以外の値を返す可能性はあるでしょうか。

317 :デフォルトの名無しさん:03/04/14 14:35
handle_ってメンバ変数?
排他をちゃんとやらんといかんような・・・
そこから考えてみるといいかもよ

318 :デフォルトの名無しさん:03/04/14 14:36
handle_はインスタンス変数?
race conditionではありうるかもね。

319 :デフォルトの名無しさん:03/04/14 15:16
begin()全体をクリティカルセクションで囲め

320 :デフォルトの名無しさん:03/04/14 15:46
>>316

ないよ。
ハンドルが得られた時点で、タイムスライスが割り当てられているか
否かはともかく、スレッドは生成されていて、waitable になってるから。
ただし排他は必要。

321 :316:03/04/14 17:03
>>317-320
皆さんありがとうございます。handle_ は
class Thread {
 HANDLE handle_;

となっていてコンストラクタで NULL に初期化されます。書き忘れ
失礼致しました。

_beginthreadex() が成功した時点でそれが保証されるんですね。
うまく行くということだと助かります。必要な排他処理というのは
begin() の入口と出口のことですよね。

322 :デフォルトの名無しさん:03/04/15 00:13
この二つに分割して考えた方が分かりやすいんじゃ…
(1)スレッドが終了したらスレッドのハンドルを閉じる
(2)前のスレッドのハンドルが有効なら次のスレッドを開始しない

323 :デフォルトの名無しさん:03/04/15 03:26
>>316
begin()を呼んでいるスレッドが複数あったりすると、それでは問題あるね。
まぁ、そんな実装しないと思うけど。

324 :山崎渉:03/04/17 15:26
(^^)

325 :山崎渉:03/04/20 04:32
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

326 :デフォルトの名無しさん:03/04/28 22:19
保守

327 :デフォルトの名無しさん:03/05/01 07:02
ho

328 :デフォルトの名無しさん:03/05/01 16:16
ちょいと質問させてくだせえ。

pthread_createと、pthread_joinくらいしか使っていない
プログラムを作っているのですが、
RedHat9.0でcompileすると実行時にcoreを吐いてしまう、ないし挙動不審です。
#RedHat8.0とかその以外のdistribution(Debianとか)では大体機能します。

うまくいく環境 (redhat 8.0)
gcc 3.2, glibc-2.2.93-5

マズーな環境(redhat 9.0)
gcc 3.2.2, glibc-2.3.2-11.9

プログラムには、
C++をベースにしていて、socketにはselectシステムコール使用してます。
#きちんとスレッドセーフを確認していないので、buggyだとは思います。
どこかクリティカルに問題が起こしているか、見当をつけたいわけです。
アドバイスをお願いします。ぜひに……

329 :デフォルトの名無しさん:03/05/01 16:27
thread 使うなら select は使わない。

330 :デフォルトの名無しさん:03/05/01 18:03
>>328
状況もわからんのにどんなアドバイスを期待してんだか...。
とりあえず、スレッド間で共有しているリソースを洗い出すことからはじめたらどうよ。
あと、core がでてんなら、直接的な原因はわかるだろうからそこから逆に追っていけばいいんでは ?

331 :328:03/05/01 19:52
>329
select併用すると駄目っすか?
#selectを使わずに
#network受信待ちを解除する(timeoutさせる)代替手段ってどんなのあります?

>330
>とりあえず、スレッド間で共有しているリソースを洗い出すことからはじめたらどうよ。
ループを続行するか否かのbool変数くらいしかないのですが、
そんなもんでもリソース食い合うとマズいのでしょうか?

>あと、core がでてんなら、直接的な原因はわかるだろうからそこから逆に追っていけばいいんでは ?
libc6絡みでcore dumpしたというメッセージが表示された記憶がありますが、
ちょっと詳しいこと分からないです。

RedHat9.0からNPTLが採用されているので、それ絡みかな、とか思ってました。
(それ以前のバージョンは問題なく動いていたので)

332 :デフォルトの名無しさん:03/05/01 20:20
>>331
> #selectを使わずに
> #network受信待ちを解除する(timeoutさせる)代替手段ってどんなのあります?

read()をSIGNALで止めるってのはできなかったっけ。EINTRで戻って来ないか?

> >あと、core がでてんなら、直接的な原因はわかるだろうからそこから逆に追っていけばいいんでは ?
> libc6絡みでcore dumpしたというメッセージが表示された記憶がありますが、
> ちょっと詳しいこと分からないです。

詳しいことはcore(とgdb)に聞け。


333 :デフォルトの名無しさん:03/05/01 21:37
>>331
> libc6絡みでcore dumpしたというメッセージが表示された記憶がありますが、
> ちょっと詳しいこと分からないです。

正直そんな事でマルチスレッドのデバッグができるとは思えない。
悪いけど、ネタと見なして以下スルーするよ。

334 :デフォルトの名無しさん:03/05/03 19:12
>329-330 >332-333
レスありがとうございます。(ほんま素人ですんません)

とりあえず、問題となっている部分が特定したのですが……
(signal 11 で segmentation fault起こしてました)
プログラムループの周波数を調整するのに、
signal, setitimer, sigpause 等を使っていたのが原因でした。

10ミリ秒単位でスリープかけるために、signalを使用していたのですが、
何とかpthreadとうまく共存させる方法、
もしくは目的と達成する代替手段はないものでしょうか?
この辺、きちんと理解・解決するための、
何か良い資料等ございましたらお教えいただけないでしょうか?

335 :bloom:03/05/03 19:13
http://homepage.mac.com/ayaya16/

336 :デフォルトの名無しさん:03/05/03 20:19
usleep?

337 :デフォルトの名無しさん:03/05/03 20:28
usleepよりは nanosleepの方がいいような。

338 :デフォルトの名無しさん:03/05/04 02:38
>>334
> signal, setitimer, sigpause 等を使っていたのが原因でした。

自分のプログラミングのせいじゃないと主張なさるわけか?

339 :デフォルトの名無しさん:03/05/04 16:11
>>334
> 何とかpthreadとうまく共存させる方法、

仕様に従ってきちんと使う。

340 :334:03/05/04 17:17
>336-337
usleepを使った場合の精度が気に入らなくて、
強引にsignalを使っていたのですが、
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/nanosleep.2.html
>nanosleep はより高い精度の停止も可能である。
>もしプロセスが SCHED_FIFO や SCHED_RR のようなリアル・タイム方針の元でス
>ケジュールされているならば、 2 ms 以下の停止ができ、
nanosleepは、2ms以下で制御できるのですね。知りませんでした。
試してみます。ありがとうございました。

>338-339
>signal, setitimer, sigpause 等を使っていた*自分の不勉強*が原因でした。
と字間を補足しますよ。POSIX準拠ちゃんと調べます。
正直、だいぶ昔に作ったパーツの使い回しだったので
この辺の問題、すっかり忘れてました。

341 :デフォルトの名無しさん:03/05/04 18:34
>>340
> POSIX準拠ちゃんと調べます。

IBMのNGPT取り込んだkernelじゃないとPOSIX準拠にはならないけど、
http://www-124.ibm.com/pthreads/
たぶんどっちでも変わらん。

342 :デフォルトの名無しさん:03/05/04 19:21
selectに関してはpthreadと併用できるはず.
POSIX 1003.1
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/select.2.html

343 :デフォルトの名無しさん:03/05/04 20:11
メンドッチイネ

344 :デフォルトの名無しさん:03/05/08 15:20
timeGetTimeを複数のスレッドで使いたいんですが
その場合timeBeginPeriodを
そのスレッド数分やるべきでしょうか?
それともどれかのスレッドで一回だけやれば十分?


345 :デフォルトの名無しさん:03/05/09 14:38
>344
一応、一回で十分。
timeBeginPeriod() はスレッドをまたいでも有効。
それどころか、プロセスをまたいでも有効。

346 :デフォルトの名無しさん:03/05/10 01:54
>>344
何やるのかしんないけど、この辺は極めて怪しげ仕様なので、MSDNを熟読のこと。

347 :デフォルトの名無しさん:03/05/10 11:53
というかMSDNさえ信用できない世界だ
timeBeginPeriodでぐぐるとサイトによって相反することが書いてたりするし

348 :デフォルトの名無しさん:03/05/10 13:18
この場合MSDNに書いてあることがすべてだろ。

マルチスレッドだろうがなんだろうがtimeBeginPeriodを使ったら
それに対応するtimeEndPeriodを呼ばなければならない。

一回最初にやって複数スレッドで使いまわすなら、
すべてのスレッドが終わった後で最後にtimeEndPeriodを一回呼べばよい。

なんか実験してるサイトもあるが、みた感じ日本語のサイトはどれも
場当たり的で参考にならない。ゲーム系のプログラマってみんな
あんな感じなのか?


349 :デフォルトの名無しさん:03/05/10 16:30
UNIXのマルチスレッドプログラミングの勉強をしようと思うのですが、
どの本がオススメでしょうか?

私のレベルは、ようやくスレ立てと削除依頼が出せるようになった程度で
ageとsageをうまく使いこなせません。

現在使用している書籍は、Pthreadsプログラミング
ttp://www.amazon.co.jp/exec/obidos/ASIN/4900900664/ref=pd_bxgy_text_2/249-7564093-3835560
で、勉強したい内容は、
(銀行のシステムのように)ロックをかけて厳密な制御を施すよりは、
むしろ、負荷に応じてスレッドの優先順位をうまく調整するあたりなので、
もう一冊購入しようと考えています。

辞書的に使える本、ビギナーに優しい本なども紹介していただけると幸いです。
あと、この本は地雷だぞ、という情報についても……

350 :デフォルトの名無しさん:03/05/10 17:26
>>349
> UNIXのマルチスレッドプログラミングの勉強をしようと思うのですが、

> 私のレベルは、ようやくスレ立てと削除依頼が出せるようになった程度で
> ageとsageをうまく使いこなせません。

ネタと言うことで良いか ?

351 :デフォルトの名無しさん:03/05/10 18:37
> 負荷に応じてスレッドの優先順位をうまく調整する

UNIXでそれやるのはキツいような気がするナー
OS側の制約に翻弄されそうな予感。

352 :デフォルトの名無しさん:03/05/10 18:42
OSやスレッドモデルによってスレッドの制御がどのように行われるか
よく理解した上でないとだめな場合もあるから、よく注意してやるがよい

353 :349:03/05/10 20:22
>350
ネタ調で書きすぎました。すんません。真面目な質問なのです。

>351-352
まったく仰るとおりで、えーと、とりあえず、基本を押さえながら
最近の動向も探っていこうという方針です。
>> 負荷に応じてスレッドの優先順位をうまく調整する
この内容に限定しなくてもよいですから、
とりあえず、この本は使えた、使えないとか、いろいろお聞きかせください。
技術本は高いので、厳選しようかと……

以下は、リストアップしている本です。
・Pスレッドプログラミング
・実践マルチスレッドプログラミング
・Win32/C++ マルチスレッドプログラミング詳説
・マルチスレッドプログラミング入門
・POSIXスレッドプログラミング
・ATLプログラミング―C++テンプレートによるスレッドセーフなコンポーネント開発

354 :デフォルトの名無しさん:03/05/13 01:40
Pスレッドプログラミング: 訳が劣悪だった。
POSIXスレッドプログラミング: 自分はこれをスレッド入門とした。

自分自身は計算の並列化に使ってるだけなんで、
負荷に応じて優先順位を…なんて面倒くさそうなことは考えたこともありません。

355 :デフォルトの名無しさん:03/05/13 05:35
Solaris使うなら、scheduling classの解説が載っている奴を。
昔はwww.sun.comにいい解説があったんだが、
今は全部セミナーになってしまったな。消すことないと思うんだが…


356 :デフォルトの名無しさん:03/05/14 02:00
実践マルチスレッドプログラミング はそこそこ無難との噂が……

>354
うわー、よくスレッド直書きで並列のコーディングできるね。
わたしゃ、並列するときは、MPIが使うのがせいぜいです。

厳密な負荷分散に考慮するような処理までは必要ないけど、例えば、
・タスクA: 2000Hzで処理を実行
・タスクB: 500Hzで処理を実行
を並行に流しても、処理の優先度がうまく調整できない……
数十Hzだと大した問題ではないけど、
数千Hzの重い処理だとつらい。この辺、うまく解決したい。

実は、あんまし小難しいことを考えずに、
金で解決する(マルチプロセッサにする)のが正解だったりして。

357 :デフォルトの名無しさん:03/05/14 08:26
そこらのOSのタスクスイッチって10ms単位ぐらいじゃないの?

358 :デフォルトの名無しさん:03/05/14 09:30
「pthread」プログラミングじゃなくて「Pスレッド」って時点で怪しいよな。

359 :デフォルトの名無しさん:03/05/14 11:14
>357
ほぼ非同期のスレッドが二つ並んでいて、
二つのCPUにそれぞれスレッドを割り当て
(つまり事実上、タスクスイッチしない)でも、
無理かな?

スレッドの優先順位を(root権限で)強制的に上げてやると、
ttp://kumagai.homeip.net/masaaki/research/library/linux/tips.html#setscheduler
10ms以下の制御が可能らしく、実際に試してそれを確認したのだが、
CPU一個だと他のタスクが完全に凍る。
でも、このホームページ曰く、マルチプロセッサだと
(ヲレは環境がなくて試せないが)他のタスクも機能してくれるらしい。

360 :デフォルトの名無しさん:03/05/14 15:49
Pentium4のタスクスイッチって、
Pentium3に比べて異様に重い気がするのだが、
これって私の勘違い? それとも周知の事実?

プログラム実行時の体感でなんとなくそう感じる。
ベンチとったわけではないから、はっきりしたことは言えないのだが……。
ちなみにOSはRedHat。

361 :デフォルトの名無しさん:03/05/14 19:34
>>360
ム板なんだし、ベンチとってみては?協力するよ。
そして衆知の事実にしようぜ。

362 :デフォルトの名無しさん:03/05/14 19:37
コンテキストスイッチとタスクスイッチとXのフォワードウィンドウ切り替えの違いがわかってないっぽいな

363 :デフォルトの名無しさん:03/05/14 19:37
>>359
リアルタイムOSじゃないんだから、スレッドの優先度は上げられても
2000Hzとか500Hzをキッチリ守るのは無理だと思う。
実行時間の比率を4:1にするのすら難しいんじゃないかなあ。

364 :デフォルトの名無しさん:03/05/14 20:34
>2000Hzとか500Hzをキッチリ守るのは無理だと思う。
有り余るCPUパワーで
禁断のソフトウェアループをかませば可能なのだけど、
論外だなあ……とか思いつつ。

>実行時間の比率を4:1にするのすら難しいんじゃないかなあ。
(スレッド毎に)gettimeofdayで時間を計りながらnanosleepで時間を調整しつつ……
ってアホでつかヲレは……。
なんかこの辺の、冴えたやり方はないものかなあ。

365 :デフォルトの名無しさん:03/05/14 21:16
タイマ割り込みは使えないのかい?

366 :デフォルトの名無しさん:03/05/14 22:09
2000Hzの処理の後、4回に1回500Hzの処理を入れたらいけないのか?

367 :デフォルトの名無しさん:03/05/14 22:15
RT Linuxでmy scheduling policy用のschedulerを書く。そすれば、

>実行時間の比率を4:1にするのすら難しいんじゃないかなあ。

は簡単。

368 :デフォルトの名無しさん:03/05/14 22:54
リアルタイムOSじゃないんだから、と・・・

369 :デフォルトの名無しさん:03/05/15 00:36
>366
>2000Hzの処理の後、4回に1回500Hzの処理を入れたらいけないのか?
ロックかけるってこと?
レスポンスが落ちるのがちょっと心配かなあ。

仮に優先課題を
(1)レスポンスタイム
(2)タスクのバランス
2000回処理した後にまとめて500回処理するのではなく、
4:1のバランスを維持する。

と想定すると、やっぱり残された選択肢はリアルタイムOS?

370 :デフォルトの名無しさん:03/05/15 01:34
>>369
つか366が言いたいのは
2000Hz taskA
500Hz taskB
として、

A,A,A,A+B,A,A,A,A+B.....

でいいんじゃない?って事では。

371 :デフォルトの名無しさん:03/05/15 01:42
そろそろスレッドを使う理由を改めて考える必要があるんじゃないですか

372 :デフォルトの名無しさん:03/05/15 01:45
すんません、write-read,write-write lock のクラスを Win32 と C++ で欲しいのですが。
CriticalSection と Event と WaitForMultipleObjects or WaitForSingleObject だけで
書くとどうなりますか? Semaphore とか使うと遅くないですかね?


373 :デフォルトの名無しさん:03/05/15 01:55
kernelオブジェクト使うと遅いよ。
どのみちEvent/WaitXXXObject使うなら変わらないと思うが。

374 :369:03/05/15 10:33
>370
>A,A,A,A+B,A,A,A,A+B.....
ちょっと書き方がまずかったみたい。
>>2000回処理した後にまとめて500回処理するのではなく、
>>4:1のバランスを維持する。
AとBをあくまで並列に処理させた場合に、
(マルチプロセッサか、Hyper-Threadingでもない限り
所詮は1CPUのタスクスイッチなのだけど)
なるべく4:1のバランスを維持するということを意図した。

1秒後のバランスが、トータルで4:1だとしても、
0.1秒で見て 10:1 とか一時的にふらついていたら嫌だなと。

WEBのサーバとかだとあんまし問題にならないだろうけど、
制御系だと結構重要ではないかと。

375 :デフォルトの名無しさん:03/05/15 12:28
2500hzで貰ってきて、aaaabと自分で呼び出せばいいような。

376 :デフォルトの名無しさん:03/05/15 12:54
制御系ならRTOS使えってことで終了。


377 :デフォルトの名無しさん:03/05/15 13:46
シングルタスクOSを使ってVM環境を作り
時分割で処理を進めればいい

378 :デフォルトの名無しさん:03/05/15 23:52
いまだに直に制御してんのか?

379 :デフォルトの名無しさん:03/05/16 00:55
マルチスレッドって解決策として安直すぎるよね。
コーディングもデバッグも大変になるし。


380 :デフォルトの名無しさん:03/05/16 18:40
MMX命令を複数のスレッドで
同時に使用することになっても問題ないですかね?
問題になるならクリティカルしようと思ってますが


381 :デフォルトの名無しさん:03/05/16 18:49
MMXってIA32のことだよな。
dispatcherがよろしくやってくれるはず。
でないとFPUも安全じゃない。

382 :デフォルトの名無しさん:03/05/16 19:14
昔、FPUについて調べたことです。

FPUのレジスタはスレッドのスイッチの際、
切り替えが行われません。
スイッチ後初めて浮動小数点命令を使ったときに、
例外が発生し、レジスタの切り替えを行います。

MMXも同じようなことをしてるんじゃないかと思います。
詳しくはIA32のマニュアルを読むとよいです。

ただOSによっては方針が違うかもしれません。
少なくともWindowsはスイッチの際の切り替えは
やっていなかったと思います。

383 :デフォルトの名無しさん:03/05/19 13:20
マルチスレッドってかなり能力の高い人でないと勉強するのは難しいのかな?
結城さんの本もかなりうまく書けているらしいですけど、なかなか敷居が高そうで、、、
一部の人に任せてしまって、問題なしですか?

384 :デフォルトの名無しさん:03/05/19 19:15
マルチスレッドを不用意に使うとバグの元になったり、かえって非効率に
なることのほうが多いのでよく理解したうえで、適切な場所に使う必要があります。
スレッドの実装そのものは別に難しいものではないので、
勉強しておいてもいいんでないかな。

と思ったけど
>一部の人に任せてしまって、問題なしですか?
その根性に問題あり。
プログラマとしての適正なさそうだからやめていいよ。

385 :デフォルトの名無しさん:03/05/19 19:57
> プログラマとしての適正なさそうだからやめていいよ。

最近これ多いな。同じ人?

386 :デフォルトの名無しさん:03/05/19 20:18
>>384
さぞかし優秀な部下がたくさんいらっしゃるんでしょうね。

387 :デフォルトの名無しさん:03/05/19 20:20
>>385
384ではないが、俺も似たようなことを思った。

388 :デフォルトの名無しさん:03/05/20 09:02
普通、「当面は得意な奴に任せておけばいいや」と思っても、一応勉強しとくよな。

389 :デフォルトの名無しさん:03/05/20 09:46
プログラムというのは、後天的に身に付く技術なので特別な才能はいらないし、
最低限人間として平均的な能力があればよく、適性もいらない。
ただし平均的なレベルから大きく劣る奴は何をやっても駄目なので、
当然プログラムも満足に作れない。
問題なのはプログラマとしての適性なのではなく、
あらゆる作業における基本能力が欠けていること。

390 :デフォルトの名無しさん:03/05/20 12:26
誰かにスレッドコーディングを任せると、2倍の労力が掛かるのを知らんのか?
自分で書いた方が10000倍ましだ。

若手教育にはまず「マルチスレッドプログラミングではまらせる」ことが大事。
スレッドかじった奴にHTやMPマシンでコード書かせてみー。泣きついてくること
受け合い。

391 :デフォルトの名無しさん:03/05/20 21:39
2倍で済めばいいほうでは?

392 :デフォルトの名無しさん:03/05/21 10:55
漏れはスケジュールずらされたから5倍位手間掛かってるかも。
残業代が出たからいいものの。。。。。


393 :デフォルトの名無しさん:03/05/21 11:18
偉い人はLinuxでpthreadを使ってプログラミングなんかしないんだろな。
SUNのワークベンチだかなんだかのIDEを素直に使ったほうがデバッグの効率はよさげだ。

Linux+pthreadでサーバ書いてしまいました。デバッグだるくて鬱。

394 :デフォルトの名無しさん:03/05/26 21:23
Linux以外のUNIX系OSのスレッドの実装はどうなってるんでしょうか?
やっぱPOSIXスレッドなのですか?
そもそもpthreadなんて使わないのだろうか・・

LinuxはNPTLやらなんやら色々出てきてもうだめぽ・・

395 :デフォルトの名無しさん:03/05/26 23:05
pthreadってそんなにだめなんですか?
Windowsの ::beginthreadex() もかなりだめぽと思うのですが。


396 :デフォルトの名無しさん:03/05/26 23:23
>>394
solarisのがpthreadの元になってる。ほぼ同じと思っていい。
pthreadに無いので有名なのはスレッドの強制停止かな。
まあこれはsolarisのが変なのかもしれない。

他のunixにもあるんだが、
いかんせんマイナーなので中身はよくわからん。

397 :デフォルトの名無しさん:03/05/27 01:31
>>393
IDEとpthreadは両立します。

UNIXのスレッド開発環境の問題は、frameworkがないplatformが多いことと、
あってもvendor固有なことです。(e.g. DECthread)

>>394
pthreadは仕様であって、実装ではありません。NPTLはpthreadの一実装です。
ただし、いわゆるPC-UNIXには完全準拠の実装が少ないという問題はあります。

>>396
スレッドの強制停止がないのは、
最低限の設計が行なわれているAPIであることの証左です。

「Javaスレッドプログラミング」
http://www.amazon.com/exec/obidos/ASIN/0201310090/103-8053412-8027047
に解説があります。大規模かつミッションクリティカルなスレッドプログラミングにおいて、
スレッドの強制停止に頼るようなプログラマはチンカスです。
なお、realtime extensionがあれば、
signalを使った非同期処理をthreadごとに用いることができます。

乱筆ご容赦。

398 :デフォルトの名無しさん:03/05/27 12:51
Linuxの実装で、スレッド毎にシグナルを処理できたっけ。
今の実装だと、どのスレッドがシグナル食らったか容易には判らんとかきいた。

399 :デフォルトの名無しさん:03/05/27 23:44
>>398
逆です。あなたの言っているのはpthreadの仕様の方です。

linuxthreadはpthread規格に適合してません。
詳しくはhttp://pauillac.inria.fr/~xleroy/linuxthreadsで。

400 :400:03/05/27 23:50
400

401 :山崎渉:03/05/28 12:34
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

402 :デフォルトの名無しさん:03/05/28 21:39
ageとく

403 :t-akiyama:03/06/18 21:08
携帯ゲーム機"プレイステーションポータブル(PSP)

 このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。
画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。

この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。

404 :デフォルトの名無しさん:03/06/20 10:15
結論: L i n u x 最 強

405 :デフォルトの名無しさん:03/07/15 16:41
保守

406 :山崎 渉:03/08/02 02:39
(^^)

407 :山崎 渉:03/08/15 17:20
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

88 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)