HTML and CSS Reference
In-Depth Information
}
};
this
.
init
=
function
()
{
// create 'size' number of worker threads
for
(
var
i
=
0
;
i
<
size
;
i
++
)
{
_this
.
workerQueue
.
push
(
new
WorkerThread
(
_this
));
}
};
this
.
freeWorkerThread
=
function
(
workerThread
)
{
if
(
_this
.
taskQueue
.
length
>
0
)
{
// don't put back in queue, but execute next task
var
workerTask
=
_this
.
taskQueue
.
shift
();
workerThread
.
run
(
workerTask
);
}
else
{
_this
.
taskQueue
.
push
(
workerThread
);
}
};
}
// runner work tasks in the pool
function
WorkerThread
(
parentPool
)
{
var
_this
=
this
;
this
.
parentPool
=
parentPool
;
this
.
workerTask
=
{};
this
.
run
=
function
(
workerTask
)
{
this
.
workerTask
=
workerTask
;
// create a new web worker
if
(
this
.
workerTask
.
script
!==
null
)
{
var
worker
=
new
Worker
(
workerTask
.
script
);
worker
.
addEventListener
(
'message'
,
function
(
event
)
{
mycallback
(
event
);
_this
.
parentPool
.
freeWorkerThread
(
_this
);
},
false
);
worker
.
postMessage
(
slidfast
.
worker
.
obj
());
}
};
}
function
WorkerTask
(
script
,
callback
,
msg
)
{
this
.
script
=
script
;
this
.
callback
=
callback
;
console
.
log
(
msg
);
this
.
obj
=
msg
;
}
var
pool
=
new
Pool
(
workers
.
threads
);