跳轉到內容

Rebol 程式設計/dispatch

來自華夏公益教科書,開放書籍,開放世界
DISPATCH port-block 

等待埠塊。當事件發生時,排程埠處理程式塊。

DISPATCH 是一個函式值。

  • port-block -- 埠處理程式對的塊(埠也可以是超時)。(型別:塊)

原始碼

[編輯 | 編輯原始碼]
dispatch: func [
    {Wait for a block of ports. As events happen, dispatch port handler blocks.} 
    port-block [block!] {Block of port handler pairs (port can be timeout too).} 
    /local ports awake timeblk result
][
    ports: copy [] 
    foreach [port job] port-block: reduce port-block [
        if any [number? port time? port] [if none? timeblk [timeblk: :job]] 
        append ports port
    ] 
    forever [
        either awake: wait/all ports [
            if foreach item awake [
                set/any 'result do select port-block item item 
                if all [value? 'result 'break = :result] [break/return true]
            ] [break]
        ] [do :timeblk]
    ]
]
華夏公益教科書