Type/to search
Built-in Functions
Global
Log
Market
Trade
Account
Futures
Exchange
IO
Network
Storage
Threads
exchange.Go
EventLoop
ctx.subscribe
ctx.poll
ctx.order
ctx.cancel
ctx.submit
Subscription
threading
Thread
ThreadLock
ThreadLock.acquire
ThreadLock.release
ThreadEvent
ThreadCondition
ThreadDict
Server
TA
Talib
OS
Structures
Built-in Variables and Constants
Conventions
Exchanges

Releases a thread lock (unlock).

release()

Examples

Test deadlock scenario

javascript
function consumer(productionQuantity, dict, pLock, cLock) { for (var i = 0; i < productionQuantity; i++) { pLock.acquire() cLock.acquire() var arr = dict.get("array") var count = arr.shift() dict.set("array", arr) Log("consumer:", count, ", array:", arr) cLock.release() Sleep(1000) pLock.release() } } function producer(productionQuantity, dict, pLock, cLock) { for (var i = 0; i < productionQuantity; i++) { cLock.acquire() // acquiring cLock after pLock cannot deadlock pLock.acquire() var arr = dict.get("array") arr.push(i) dict.set("array", arr) Log("producer:", i, ", array:", arr) pLock.release() Sleep(1000) cLock.release() } } function main() { var dict = threading.Dict() dict.set("array", []) var pLock = threading.Lock() var cLock = threading.Lock() var productionQuantity = 10 var producerThread = threading.Thread(producer, productionQuantity, dict, pLock, cLock) var consumerThread = threading.Thread(consumer, productionQuantity, dict, pLock, cLock) consumerThread.join() producerThread.join() }

See Also

Remarks

Note that improper use of thread locks may cause deadlocks.