博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
信号灯
阅读量:5327 次
发布时间:2019-06-14

本文共 1468 字,大约阅读时间需要 4 分钟。

程序间行为,有互斥关系,这就需要有个“信号灯”标注之。
一但程序断线、正常或不正常退出,信号要及时取消。
意外情况下的信号取消,往往是难点, 利用SQL临时数据库中临时表的特性可达成。
信号灯相关功能 -> 设置、检查、去掉。
前提:(1)每个APP,登录后,迟续保持一个到SQL连接。
            (2)一些自定义函数,不言自明。
应用举例:(1)科目表、权限表等
树状结构的数据设置,不便做并发操作处理。简化逻辑为:先入者设
                               信号灯,可修改;后入者设信号不成功,则以只读方式进入表单;
                      (2)操作信登录后,其离线、在线状态,及相关的IM收发,需利用信号灯标识。
                      (3)不允许操作员重复登录的功能
Function
 glSignalSet
Lparameters tcSignal, tcExtraData
*-
 设置信号灯.
*-
 当重复设置(名相同)时, 若新旧信号是同一连接@@SPID, 允许重设. 不同连接,失败.
*-
*-
 信号灯 将在 glSignalKill时 或 连接断开时 删除
Local cTmp,cSql,nArea,nSPid
nArea
=
Select
()
tcSignal 
=
 Chrtran(tcSignal,
"
,' 
"
,
'
') + '_'+ ;
    CHRTRAN(goapp._c系统名称,
'
 '+Chr(39)+Chr(34),'') +'_' +;
    gcGetMacro(goApp._c数据连接串,
'
database',1,';;')
glSql(goApp._n连接句柄,
'
sp_who @@SPID','_tmpcheckSPid')
nSPid
=
_tmpcheckSPid.spid
TEXT 
to
 cSql
    
Select
 top 
1
 
*
 from ##
<<
tcSignal
>>
ENDTEXT
If
 glSql(goApp._n连接句柄,cSql,
'
_SignalCreation',.F.,'') && exist old signal
    
If
 nSpid !
=
 
Val
( gcGetMacro(ExTraData,
'
CnnHandle') ) &&不是本app设置的signal,不可重设.失败也罢
        
Select
 (nArea)
        
Return
 .F.
    Endif
Endif
glSql(goApp._n连接句柄,Textmerge(
'
DROP TABLE ##<<tcSignal>>'),'_SignalCreation',.F.,'')
*--
TEXT 
to
 cSql
    CREATE TABLE ##
<<
tcSignal
>>
 (ExtraData 
char
(
1000
) )
    Insert into ##
<<
tcSignal
>>
 (ExtraData )    values (
'
{CnnHandle=<<nSpID>>} {ExtraData=<<Evl(tcExtraData,'')>>}')
ENDTEXT
If
 
Not
 glSql(goApp._n连接句柄,cSql,
'
_SignalCreation',.F.,'')
    
Return
 .F.
Endif
Return
 .T.
*************************************************

转载于:https://www.cnblogs.com/maxchan/archive/2007/08/14/855980.html

你可能感兴趣的文章
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
深入理解jQuery框架-框架结构
查看>>
YUI3自动加载树实现
查看>>
python知识思维导图
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
点击复制插件clipboard.js
查看>>
[Kali_BT]通过低版本SerialPort蓝牙渗透功能手机
查看>>
C语言学习总结(三) 复杂类型
查看>>
HNOI2018
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>