concurrency.distributed-docs: update the Example article

char-rename
Alexander Iljin 2017-01-05 20:06:18 +03:00 committed by John Benediktsson
parent e82ee2d723
commit ca08bfd4b0
1 changed files with 20 additions and 18 deletions

View File

@ -10,27 +10,29 @@ HELP: start-node
ARTICLE: "concurrency.distributed.example" "Distributed Concurrency Example" ARTICLE: "concurrency.distributed.example" "Distributed Concurrency Example"
"In this example the Factor instance associated with port 9000 will run " "In this example the Factor instance associated with port 9000 will run "
"a thread that receives and prints messages " "a thread that receives and prints messages in the listener. "
"in the listener. The code to start the thread is:" "The code to run the server is:"
{ $examples { $code
{ $unchecked-example "USING: io.servers ;"
": log-message ( -- ) receive . flush log-message ;" "9000 local-server <node-server> start-server drop"
"[ log-message ] \"logger\" spawn dup name>> register-remote-thread"
}
} }
"This spawns a thread waits for the messages. It registers that thread as " "The code to start the thread is:"
"able to be accessed remotely using " { $link register-remote-thread } "." { $code
"USING: concurrency.messaging threads ;"
": log-message ( -- ) receive . flush log-message ;"
"[ log-message ] \"logger\" spawn dup name>> register-remote-thread"
}
"This spawns a thread that waits for the messages and prints them. It registers "
"the thread as remotely accessible with " { $link register-remote-thread } "."
$nl $nl
"The second Factor instance, the one associated with port 9001, can send " "The second Factor instance, the one associated with port 9001, can send "
"messages to the 'logger' thread by name:" "messages to the 'logger' thread by name:"
{ $examples { $code
{ $unchecked-example "USING: io.sockets ; FROM: concurrency.messaging => send ;"
"USING: io.sockets concurrency.messaging concurrency.distributed ;" "\"hello\" \"127.0.0.1\" 9000 <inet4> \"logger\" <remote-thread> send"
"\"hello\" \"127.0.0.1\" 9000 <inet4> \"logger\" <remote-thread> send"
}
} }
"The " { $link send } " word is used to send messages to other threads. If an " "The " { $link send } " word is used to send messages to threads. If an "
"instance of " { $link remote-thread } " is provided instead of a thread then " "instance of " { $link remote-thread } " is provided, then "
"the message is marshalled to the named thread on the given machine using the " "the message is marshalled to the named thread on the given machine using the "
{ $vocab-link "serialize" } " vocabulary." { $vocab-link "serialize" } " vocabulary."
$nl $nl
@ -39,9 +41,9 @@ $nl
$nl $nl
"It is also possible to use " { $link send-synchronous } " to receive a " "It is also possible to use " { $link send-synchronous } " to receive a "
"response to a distributed message. When an instance of " { $link thread } " " "response to a distributed message. When an instance of " { $link thread } " "
"is marshalled it is converted into an instance of " { $link remote-thread } "is marshalled, it is converted into an instance of " { $link remote-thread }
". The receiver of this can use it as the target of a " { $link send } ". The receiver of this can use it as the target of a " { $link send }
" or " { $link reply } " call." ; ", " { $link send-synchronous } " or " { $link reply-synchronous } " call." ;
ARTICLE: "concurrency.distributed" "Distributed message passing" ARTICLE: "concurrency.distributed" "Distributed message passing"
"The " { $vocab-link "concurrency.distributed" } " implements transparent distributed message passing, inspired by Erlang and Termite." $nl "The " { $vocab-link "concurrency.distributed" } " implements transparent distributed message passing, inspired by Erlang and Termite." $nl