Sumber daya yang dimuat... Pemuatan...

Benang

PeraturanThread()fungsi digunakan untuk membuat thread bersamaan.

PeraturanThread()fungsi mengembalikan aThreadobjek, yang digunakan untuk mengelola thread yang dibuat secara bersamaan, komunikasi thread, dll.

Threadobjek

Thread ((func,...args) Thread ((...item)

Parameterfuncadalah fungsi untuk eksekusi bersamaan (diperkenalkan dengan referensi), dan mendukung pemasangan fungsi anonim.funcdapat menerima beberapa parameter, yang akan diteruskan melalui...argsOleh karena itu, daftar parameter darifuncharus konsisten dengan...args.

fungsi benar fungsi Parameterargadalah parameter aktual yang diteruskan kefunc(yaitu fungsi pelaksanaan thread bersamaan) ketika callback dijalankan; mungkin ada beberapa parameterarg, dan daftar parameter darifuncharus konsisten dengan...args.

arg palsu string, number, bool, object, array, function, null value dan tipe lain yang didukung oleh sistem Parameteritemadalah array yang berisi referensi fungsi dan parameter mereka yang akan dijalankan secara bersamaan.itemparameter 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 benangfuncmelewati 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