我想在Racket中编写一个多线程程序,实际上利用多个进程和共享内存空间,比如C中的pthread.Blacket提供“线程”,但它只使用一个进程来执行多个线程。它还提供了“子进程”,用于通过在多个进程上运行的命令行执行新程序,但这些程序不能共享相同的内存空间。
答案 0 :(得分:4)
不要这样做。
Racket提供parallelism via futures and places,但它们不提供(不受限制的)共享内存空间。如果要将数据从一个线程发送到另一个线程,请使用场所频道。
正如Greg Hendershott指出的那样,您可以通过场所频道发送共享矢量,这可以提供共享空间。 (但这与共享所有内存引用并不是一回事,这就是熟悉Java风格线程的人所期望的。后者是我不能做的事情。 "指的是。)
如果您真的想使用类似pthread的线程Guile does provide them,那么您将不再使用Racket。 ; - )