PeraturanThread()
fungsi digunakan untuk membuat benang serentak.
PeraturanThread()
fungsi mengembalikan aThread
objek, yang digunakan untuk menguruskan benang serentak yang dicipta, komunikasi benang, dll.
Thread
objek
Thread ((func,...args) Thread ((... item)
Parameterfunc
adalah fungsi untuk pelaksanaan serentak (diterbitkan oleh rujukan), dan menyokong menyampaikan fungsi tanpa nama.func
boleh menerima pelbagai parameter, yang akan dihantar melalui...args
Oleh itu, senarai parameterfunc
perlu konsisten dengan...args
.
fungsi
betul
fungsi
Parameterarg
adalah parameter sebenar yang dihantar kepadafunc
(iaitu fungsi pelaksanaan thread serentak) apabila panggilan balik dijalankan; mungkin terdapat beberapa parameterarg
, dan senarai parameterfunc
perlu konsisten dengan...args
.
arg
palsu
rentetan, nombor, bool, objek, susunan, fungsi, nilai sifar dan jenis lain yang disokong oleh sistem
Parameteritem
adalah array yang mengandungi rujukan fungsi dan parameter mereka yang akan dijalankan secara serentak.item
parameter boleh dihantar dalam apabila memanggilThread
function.
item betul Array
function test1(a, b, c) {
Log("test1:", a, b, c)
}
function main() {
var t1 = threading.Thread(test1, 1, 2, 3)
var t2 = threading.Thread(function (msg) {
Log("msg:", msg)
}, "Hello thread2")
t1.join()
t2.join()
}
Buat utas serentak untuk kedua-dua fungsi tersuai dan fungsi tanpa nama.
function test1(msg) {
Log("msg:", msg)
test2("Hello test2")
}
function main() {
var t1 = threading.Thread(
[function(a, b, c) {Log(a, b, c)}, 1, 2, 3],
[test1, "Hello test1"],
[`function test2(msg) {Log("msg:", msg)}`])
t1.join()
}
GunakanThread(...items)
bentuk untuk mencipta benang serentak dan melaksanakan pelbagai fungsi secara berurutan.
function testFunc1(p) {
Log("testFunc1 p:", p)
}
function main() {
threading.Thread(function(pfn) {
var threadName = threading.currentThread().name()
var threadId = threading.currentThread().id()
pfn(`in thread threadName: ${threadName}, threadId: ${threadId}`)
}, testFunc1).join()
}
Ia menyokong lulus parameter kepada fungsi yang dijalankan secara serentak.
function ml(input) {
const net = new brain.NeuralNetwork()
net.train([
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] },
])
return net.run(input)
}
function main() {
var ret = threading.Thread([ml, [1, 0]], [HttpQuery("https://unpkg.com/brain.js")]).join()
// ret: {"id":1,"terminated":false,"elapsed":337636000,"ret":{"0":0.9339330196380615}}
Log(ret)
}
Ia menyokong lulus dalam rentetan fungsi dan boleh mengimport perpustakaan luaran secara dinamik untuk pengkomputeran serentak.
Fungsi benangfunc
telah diteruskan ke dalamThread()
fungsi untuk pelaksanaan serentak berjalan dalam persekitaran yang terpencil, jadi pembolehubah di luar benang tidak boleh dirujuk secara langsung, dan penyusunan akan gagal apabila dirujuk. Pada masa yang sama, rujukan kepada fungsi penutupan lain tidak disokong dalam benang. Semua API yang disediakan oleh platform boleh dipanggil dalam benang, tetapi fungsi lain yang ditakrifkan pengguna tidak boleh dipanggil.
Ia menyokong sistem backtesting dan persekitaran perdagangan langsung. Semua fungsi yang berkaitan dengan thread serentak hanya disokong sebagai keserasian kod dalam sistem backtesting dan tidak akan dilaksanakan oleh thread serentak, jadi mereka tidak akan diulangi dalam bab ini.
{@fun/Threads/threading/getThread getThread}, {@fun/Threads/threading/mainThread mainThread}, {@fun/Threads/threading/currentThread currentThread}, {@fun/Threads/threading/Lock Lock}, {@fun/Threads/threading/Condition Condition}, {@fun/Threads/threading/Event Event}, {@fun/Threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop}
Tetapan Rangkaian getThread