Event

Event()函数用于创建一个*线程事件*对象,该对象用于线程间的同步,允许一个线程等待另一个线程的通知或信号。

Event()函数返回一个ThreadEvent对象。 ThreadEvent对象

Event()

”`javascript function consumer(productionQuantity, dict, pEvent, cEvent) { for (var i = 0; i < productionQuantity; i++) { while (dict.get(“array”).length == 0) { pEvent.wait() } if (pEvent.isSet()) { pEvent.clear() }

    var arr = dict.get("array")
    var count = arr.shift()
    dict.set("array", arr)
    Log("consumer:", count, ", array:", arr)
    cEvent.set()
    Sleep(1000)
}

}

function producer(productionQuantity, dict, pEvent, cEvent) { for (var i = 0; i < productionQuantity; i++) { while (dict.get(“array”).length != 0) { cEvent.wait() } if (cEvent.isSet()) { cEvent.clear() }

    var arr = dict.get("array")
    arr.push(i)
    dict.set("array", arr)
    Log("producer:", i, ", array:", arr)
    pEvent.set()
    Sleep(1000)
}

}

function main() { var dict = threading.Dict() dict.set(“array”, []) var pEvent = threading.Event() var cEvent = threading.Event() var productionQuantity = 10 var producerThread = threading.Thread(producer, productionQuantity, dict, pEvent, cEvent) var consumerThread = threading.Thread(consumer, productionQuantity, dict, pEvent, cEvent)

consumerThread.join()
producerThread.join()

}“` 两个并发线程访问共享资源。

支持回测系统、实盘环境。

{@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/Thread Thread}, {@fun/Threads/threading/Dict Dict}, {@fun/Threads/threading/pending pending}, {@fun/Threads/threading/eventLoop eventLoop}