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



无法理解如何将两个进程(进程1和进程2)分别实现为可执行文件和交换消息。比如(1.你好2.你好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);
    }   
}

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

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

在exec行中,cmd被设置为参数列表中的第一个单词,字符串.dis被连接到它(以说明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 foundn", cmd);
            return;
        }
        c->init(ctx, args);
}

相关内容

  • 没有找到相关文章

最新更新