lock()

阅读(2498) 标签: 加同步锁,

描述:

加同步锁。

语法:

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()