描述:
加同步锁
语法:
lock(n,s)
备注:
加同步锁,以防止多个线程同时访问文件,加锁以后仅限此线程访问、执行,访问执行完成以后解锁,其他进程才可以继续访问执行。
参数:
n |
锁名 |
s |
加锁超时时间,单位毫秒,省略表示一直等待 |
选项:
@u |
解锁 |
返回值:
锁名
示例:
加锁
|
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) |
系统睡眠60秒 |
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\012月份集算器发布\lock1.dfx |
|
3 |
=callx(A2,to(100)) |
使用callx函数访问文件时,【工具】-【选项】中最大并行数要大于一,加锁以后其他进程访问时不会报错 |
4 |
=A1.import@b() |
|