質問編集履歴

6

訂正

2017/08/30 15:27

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  ```php
24
24
 
25
- # php5.3.3
25
+ # php5.3.29
26
26
 
27
27
  # pthreads 2.0.10
28
28
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  usleep(250000);
52
52
 
53
- system('実行コマンド', $output);
53
+ passthru('実行コマンド',$ret);
54
54
 
55
55
  $this->setGarbage();
56
56
 
@@ -60,19 +60,21 @@
60
60
 
61
61
  $p = new Pool(4);
62
62
 
63
- $arrInput[1] = $argv[$i];
64
-
65
- $arrInput[2] = $argv[$i];
66
-
67
63
 
68
64
 
69
65
  $tasks = array();
70
66
 
71
- for ($i = 3; $i < count($argv); ++$i) {
67
+ $tasks[] = array(1,2,3);
72
68
 
73
- $arrInput[3] = $argv[$i];
69
+ $tasks[] = array(1,2,3);
74
70
 
71
+ $tasks[] = array(1,2,3);
72
+
73
+ $tasks[] = array(1,2,3);
74
+
75
+ for ($i = 0; $i < count($tasks); ++$i) {
76
+
75
- $p->submit(new job($arrInput));
77
+ $p->submit(new job($tasks[$i]));
76
78
 
77
79
  }
78
80
 

5

version 記載の追加

2017/08/30 15:27

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -21,6 +21,10 @@
21
21
  ##やっていること
22
22
 
23
23
  ```php
24
+
25
+ # php5.3.3
26
+
27
+ # pthreads 2.0.10
24
28
 
25
29
  class job extends Collectable
26
30
 

4

collectとshutdownの位置

2017/08/30 15:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -74,8 +74,8 @@
74
74
 
75
75
 
76
76
 
77
+ while($p->collect());
78
+
77
79
  $p->shutdown();
78
80
 
79
- while($p->collect());
80
-
81
81
  ```

3

訂正

2017/08/30 14:54

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ##知りたいこと
14
14
 
15
- $p のうち暇なスレッドが存在する確認方法がわかれば次の作業を渡したいです。($p->submit(...));を)
15
+ $p のうち1つ以上の作業が無い状態のスレッドが存在する確認方法がわかれば次の作業を渡したいです。($p->submit(...));を)
16
16
 
17
17
  この具体的なやり方をご教示いただければと思います。
18
18
 

2

説明追加

2017/08/30 05:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,37 @@
22
22
 
23
23
  ```php
24
24
 
25
+ class job extends Collectable
25
26
 
27
+ {
28
+
29
+ public $val;
30
+
31
+
32
+
33
+ public function __construct($arr)
34
+
35
+ {
36
+
37
+ $this->arr = $arr;
38
+
39
+ }
40
+
41
+
42
+
43
+ public function run()
44
+
45
+ {
46
+
47
+ usleep(250000);
48
+
49
+ system('実行コマンド', $output);
50
+
51
+ $this->setGarbage();
52
+
53
+ }
54
+
55
+ }
26
56
 
27
57
  $p = new Pool(4);
28
58
 

1

説明を修正

2017/08/30 04:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,22 +1,24 @@
1
- ## わからないこと
1
+ ## 困ってこと
2
2
 
3
3
  poolを利用しています。
4
4
 
5
+ 以下phpコードですと、すべてのスレッドに最初に均等に割り振っている状態のようです。
6
+
7
+ 1つのスレッドが長い処理を行うと、ほかのスレッド(ここでは全4つ)は作業が終わればプロセスが終了しているように見えております。(psで見ているぶんには)
8
+
5
- スレッドの状態を「把握」し暇なドにjobをと思っております。
9
+ そして、長い処理を行っているスレッドだけ独りでクされたjobを処理るように見えております。
6
10
 
7
11
 
8
12
 
9
13
  ##知りたいこと
10
14
 
11
- $p のうち暇なスレッドが存在すれば次の作業を渡したいです。
15
+ $p のうち暇なスレッドが存在する確認方法がわかれば次の作業を渡したいです。($p->submit(...));を)
12
16
 
13
17
  この具体的なやり方をご教示いただければと思います。
14
18
 
15
19
 
16
20
 
17
21
  ##やっていること
18
-
19
- 以下ですと、すべてのスレッドに最初に均等に割り振っている状態です。
20
22
 
21
23
  ```php
22
24