PeraturanThread()
fungsi digunakan untuk membuat thread bersamaan.
PeraturanThread()
fungsi mengembalikan aThread
objek, yang digunakan untuk mengelola thread yang dibuat secara bersamaan, komunikasi thread, dll.
Thread
objek
Thread ((func,...args) Thread ((...item)
Parameterfunc
adalah fungsi untuk eksekusi bersamaan (diperkenalkan dengan referensi), dan mendukung pemasangan fungsi anonim.func
dapat menerima beberapa parameter, yang akan diteruskan melalui...args
Oleh karena itu, daftar parameter darifunc
harus konsisten dengan...args
.
fungsi
benar
fungsi
Parameterarg
adalah parameter aktual yang diteruskan kefunc
(yaitu fungsi pelaksanaan thread bersamaan) ketika callback dijalankan; mungkin ada beberapa parameterarg
, dan daftar parameter darifunc
harus konsisten dengan...args
.
arg
palsu
string, number, bool, object, array, function, null value dan tipe lain yang didukung oleh sistem
Parameteritem
adalah array yang berisi referensi fungsi dan parameter mereka yang akan dijalankan secara bersamaan.item
parameter dapat diteruskan dalam ketika memanggilThread
function.
item benar 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 thread bersamaan untuk fungsi kustom dan fungsi anonim.
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 membuat thread bersamaan dan menjalankan beberapa 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()
}
Ini mendukung lulus parameter ke fungsi yang dijalankan secara bersamaan.
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)
}
Ini mendukung lulus dalam string fungsi dan dapat mengimpor perpustakaan eksternal secara dinamis untuk komputasi simultan.
Fungsi benangfunc
melewati ke dalamThread()
fungsi untuk eksekusi bersamaan berjalan di lingkungan yang terisolasi, sehingga variabel di luar thread tidak dapat dirujuk secara langsung, dan kompilasi akan gagal ketika dirujuk. Pada saat yang sama, referensi ke fungsi penutupan lainnya tidak didukung di dalam thread. Semua API yang disediakan oleh platform dapat dipanggil di dalam thread, tetapi fungsi yang didefinisikan pengguna lainnya tidak dapat dipanggil.
Ini mendukung sistem backtesting dan lingkungan perdagangan langsung. Semua fungsi terkait thread bersamaan hanya didukung sebagai kompatibilitas kode dalam sistem backtesting dan tidak akan benar-benar dieksekusi oleh thread bersamaan, jadi mereka tidak akan diulang 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}
Pengaturan Jaringan getThread