两个带有两个可执行文件(.dis)文件的线程Limbo(编程语言)

时间:2014-10-28 09:51:13

标签: multithreading executable

无法理解如何做两个进程(进程1和2)分别实现可执行文件和交换消息。像(1.Hello 2.Hi 1.你好吗?......)。

下面的代码说明了两个线程如何从文本文件中交换消息。 必要的是,而不是文本文件成为可互相通信的可执行文件(.dis)。

implement LThread;
include "sys.m";
include "bufio.m";
include "draw.m";

sys:Sys;
FD: import Sys;
stOut: ref Sys->FD;

bufio:Bufio;
Iobuf:import bufio;  

LThread:module{
    init: fn(nil: ref Draw->Context, nil: list of string);

    process: fn(pName: string); 
};

init(nil: ref Draw->Context, nil: list of string) {
    sys=load Sys Sys->PATH; 
    bufio=load Bufio Bufio->PATH;

    spawn process("processA.txt");
    sys->sleep(10);
    spawn process("processB.txt");
}
process(pName: string) {

    file_buf:ref Iobuf;
    file_buf = bufio->open(pName, sys->ORDWR);

    temp_line:string;
    temp_line=" ";

    while (temp_line != nil){
    temp_line=file_buf.gets('\n');
    sys->sleep(200);
    sys->print("%s \n",temp_line);
    }   
}

也许在模块的帮助下,我不知道。

1 个答案:

答案 0 :(得分:0)

我找到了我想要的东西。它自己的接口具有Command模块的类型,这是它执行的东西的类型。

在exec的行上,cmd被设置为参数列表中的第一个单词,并且字符串.dis被连接到它(以解释Limbo目标程序文件通常使用此后缀命名的事实)。 信息:" Limbo编程语言"。

exec(ctx: ref Draw->Context, args: list of string){
        c: Command;
        cmd,file: string;

        cmd = hd args;      

        file = cmd + ".dis";
        c = load Command file;
        if(c == nil)
            c = load Command "/dis/"+file;

        if(c == nil) {
            sys->print("%s: not found\n", cmd);
            return;
        }
        c->init(ctx, args);
}