描述:
加同步锁。
语法:
lock(n,s)
备注:
加同步锁,以防止多个线程同时访问文件,加锁以后仅限此线程访问和执行,访问执行完成以后解锁,其他进程才可以继续访问执行。
成功返回true,失败返回false。
参数:
n |
锁名。 |
s |
加锁超时时间,单位毫秒,省略表示一直等待。 |
选项:
@u |
解锁。 |
返回值:
Boolean值
加锁,脚本文件D:\test \lock1.splx内容如下:
|
A |
|
1 |
=lock(1) |
加同步锁,锁名为1。 |
2 |
>output("Task "/arg1/" start...") |
输出参数,开始计算。 |
3 |
=file("D:/file/test/1.btx") |
创建btx文件。 |
4 |
=create(ID,Value) |
创建序表。 |
5 |
>A4.record([arg1,arg1*arg1]) |
向A4的序表中添加记录。 |
6 |
>sleep(1000) |
系统睡眠1000毫秒。 |
7 |
>A3.export@ab(A4) |
将A4中的序表追加写入到btx文件中。 |
8 |
>output("Task "/arg1/" finished.") |
输出参数,计算结束。 |
9 |
>lock@u(1) |
解锁。 |
其他进程访问:
|
A |
|
1 |
=file("D:/file/test/1.btx") |
|
2 |
D:\test \lock1.splx |
|
3 |
=callx(A2,to(100)) |
使用callx函数访问文件时,工具 - 选项中最大并行数要大于一,加锁以后其他进程访问时不会报错。 |
4 |
=A1.import@b() |
|