TC官方合作论坛

标题: 【鬼玺开源】TC5.0 - 利用数组实现的《线程变量》 [打印本页]

作者: sam7894604    时间: 2015-10-17 11:40
标题: 【鬼玺开源】TC5.0 - 利用数组实现的《线程变量》
本帖最后由 sam7894604 于 2015-10-18 06:48 编辑

就我所知,好像很多人用全局变量来保存对象等…

事实上 TC 基于自由性,是没有对全局变量做保护的,频繁读写操作是有可能导致崩溃

再说…每次都得传入下标,非常麻烦啊!

这几天出现一个帖子 请大神帮忙看下下面代码,问题已经写在注解里。

该帖中说的,线程独立变量,让子程序中任意处获取的变量都是线程内的需求…


好啦…正好!没错…又是正好,当初在设计自用的 5.0 框架时,就有考虑过类似问题

只是这个想法被我封杀了,使用有一定的麻烦…

但是我想有人问那就写出来吧,给各位当作一种解决办法!

且封装的函数也处理了保护的问题,但是效率会有些下降,自行考虑使用



介绍下函数分别如下

其中 tvThread Var 的缩写


tv_Set     线程中调用,用作设置变量
比如平常使用的 var a = 100
你编写时必须改成 tv_Set("a",100)


tv_Get     线程中调用,用作获取变量
比如平常使用的 traceprint(a)
你编写时必须改成 traceprint(tv_Get("a"))


tv_Clear  线程中调用,用作清除当前线程的变量
通常用在线程退出时使用。


tv_ClearInvalid    任意处皆可调用,用做清除所有无效的线程变量
如果你是直接关闭线程的,没有办法调用 tv_Clear 时
可以在关闭线程后接这功能,或是你自己定时清除




下载示例:



老样子,你觉得对你有帮助,请帮我评分吧!

作者: 言术    时间: 2015-10-17 11:40
了解一下
作者: qq462621349    时间: 2015-10-17 11:48
顶个
作者: 785953306    时间: 2015-10-17 12:00
tv_ClearInvalid    任意处皆可调用,用做清除所有无效的线程变量
如果你是直接关闭线程的,没有办法调用 tv_Clear 时
可以在关闭线程后接这功能,或是你自己定时清除

作者: 千叶de悠一    时间: 2015-10-17 12:13
鬼已经超神了
作者: lidongxu    时间: 2015-10-17 12:45
看看
作者: cjxdn    时间: 2015-10-17 15:45
看看
作者: good    时间: 2015-10-17 15:48
高大上~高富帅~高老庄~高山下的花环~高圆圆~高丽参~糕点~高兴~高效~高薪~牙膏~~
作者: 九州烟雨    时间: 2015-10-17 16:34
士大夫似的
作者: minews    时间: 2015-10-17 17:50
- 利用数组实现的
作者: zhujun8469    时间: 2015-10-17 18:35
看看
作者: 东月山    时间: 2015-10-17 20:00
有没搞错这还要隐藏啊!!!!

作者: itcfan    时间: 2015-10-17 20:01

作者: zc317414    时间: 2015-10-17 20:07
利用数组实现的『线程变量
作者: 15131240422    时间: 2015-10-18 00:29
123123123
作者: 794601399    时间: 2015-10-18 00:38
看看
作者: 18667006365    时间: 2015-10-18 07:55
生日快乐!生日快乐!生日快乐!
作者: q741230412    时间: 2015-10-18 08:11

作者: 高冷小Q    时间: 2015-10-18 19:51

作者: 東方3399111    时间: 2015-10-21 14:25
感謝你的資訊分享
作者: fengerccsyk    时间: 2015-10-21 20:03
11111111111111111
作者: fengerccsyk    时间: 2015-10-21 20:19
看完了,感觉楼主这些的很不错,但是现在的TC数组和临界区有BUG,这么写依旧没法改变崩溃的原因

首先,变量依旧是全局数组,对数组的写依旧是普通的全局数组赋值,只是改变了形式
其次,关闭线程有概率导致全局的临界区死锁,也就是恰好关闭的时候临界区进入了,但是没有离开,导致全部线程都在等待,导致卡主

第二个问题已经向TC反馈,并给了测试DEMO,第一个问题大家都能感觉到全局数组不稳定,这个还没有能直接测试的demo 只能期待TC尽快解决了


再发表下自己感想:

底层的BUG 上层代码写的再漂亮都不能完全解决,只希望TC能重视下多线程的稳定性问题
作者: zxjkings    时间: 2015-10-22 03:55
asAS
作者: sam7894604    时间: 2015-10-22 04:18
fengerccsyk 发表于 2015-10-21 20:19
看完了,感觉楼主这些的很不错,但是现在的TC数组和临界区有BUG,这么写依旧没法改变崩溃的原因

首先,变 ...

将临界区的部份,改成原子锁,应该能解决死锁问题。
作者: complefejw    时间: 2015-10-23 20:06
RE: 【鬼玺开源】TC5.0 - 利用数组实现的《线程变量》 [修改]

作者: dzyukan    时间: 2015-10-24 05:34
觉得对我有帮助
作者: yanjin0917    时间: 2015-10-24 19:14
45555555555555555555555555
作者: yanjin0917    时间: 2015-10-24 19:14
45555555555555555555555555
作者: yanjin0917    时间: 2015-10-24 19:14
45555555555555555555555555
作者: xwei9277    时间: 2015-10-25 19:20

作者: luqinlong    时间: 2015-10-28 06:02
位运算
作者: somyyy    时间: 2015-11-2 03:43
学习学校
作者: truman    时间: 2015-11-2 13:47
xxxxxxxxxxxxx
作者: ai0171596740    时间: 2015-11-2 15:24
鬼哥厉害,可惜我看不懂
作者: 流沙    时间: 2015-11-3 04:53

作者: ybc178    时间: 2015-11-5 00:59
支持
作者: xiaoguai    时间: 2015-11-6 01:13
1111111111111111111111111111111
作者: llg1983    时间: 2015-11-6 11:55

作者: luqinlong    时间: 2015-11-6 12:18
请问这个是什么原理能够保护变量的
作者: gospeell    时间: 2015-11-9 16:55
顶个
作者: sandorn    时间: 2015-11-10 12:15
学习一下!!!!!!!!!!!!!!!!!!
作者: alanyfd    时间: 2015-11-22 01:03
ddddddddddddddddddddddddddddd
作者: jue007    时间: 2015-11-29 15:57
GG德国国歌胡好吧
作者: dragon07zn    时间: 2015-12-3 19:58
看一看
作者: 谁人泪    时间: 2015-12-6 16:52
考虑考虑看看了
作者: dangq    时间: 2015-12-10 16:12
支持了  谢谢
作者: go123od    时间: 2015-12-11 15:22
这个乍了
作者: dzscuz    时间: 2015-12-12 02:58
看看……
作者: leono@126.com    时间: 2015-12-18 10:12

作者: 867427677    时间: 2015-12-18 18:13
11111111111111111111
作者: yzchmin    时间: 2015-12-18 21:39
tv_Clear  线程中调用,用作清除当前线程的变量
作者: render    时间: 2015-12-22 22:19
谢谢分享!
作者: smorup    时间: 2015-12-23 15:43
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: 隔壁老王    时间: 2015-12-25 14:00
dddddddddddddddddddddd
作者: 一杯水    时间: 2015-12-30 02:29
看看看
作者: zuoiaohua    时间: 2016-1-4 00:33
谢谢楼主分享
作者: laowantong    时间: 2016-1-12 16:02

作者: lentrol    时间: 2016-1-14 14:25
。。。。。。。。。。。。
作者: lcylcyll    时间: 2016-1-16 22:25

了解一下
作者: by烟仔    时间: 2016-1-22 22:54
进来学习学习
作者: menglovelili    时间: 2016-2-3 12:48
感谢分享,不觉明厉啊!
作者: cxkice    时间: 2016-2-8 15:43
看看内容
作者: liyunhua258    时间: 2016-2-18 17:27
dfdfsfdsdfs
作者: aoaoawei    时间: 2016-3-7 18:36
感谢楼主分享
作者: htht530    时间: 2016-3-8 12:40
不错哦
作者: xcxzj    时间: 2016-4-9 20:17
......................
作者: justme    时间: 2016-4-14 10:58
很给力!
作者: awlbm    时间: 2016-4-22 23:56
查看本帖隐藏内容请
作者: linyangshao    时间: 2016-4-26 20:09
1111111111
作者: peisenlin    时间: 2016-5-20 10:26
看看!
作者: wsj    时间: 2016-5-21 00:14
看看
作者: veron    时间: 2016-5-23 14:53
多谢分享
作者: tianxiang201    时间: 2016-6-17 18:35
好好学习
作者: tbmbx2017    时间: 2016-9-9 13:54
厉害,相当可以的了
作者: Broadsword    时间: 2016-9-10 15:42
[源码分享] 【鬼玺开源】TC5.0 - 利用数组实现的《线程变量》
作者: YGV    时间: 2016-10-7 13:53

作者: 437667354    时间: 2016-10-12 08:12
支持一下
作者: xptool    时间: 2016-10-19 23:02
顶楼主啦..希望楼主多发精品好帖啦.....
作者: y874855105    时间: 2016-10-20 09:21
带走带走
作者: 夜、殇    时间: 2016-11-6 17:18
看一下
作者: HeiのCC    时间: 2016-11-23 11:40

作者: bylove    时间: 2016-11-23 14:29
公司的公司的非高峰时段个大傻瓜
作者: 剑仙十号    时间: 2016-11-23 19:58
回复学习。
作者: 浮生游    时间: 2016-11-24 10:00
真搞不懂数组..
作者: 懒懒兔    时间: 2016-11-24 22:25
一个线程走天涯
作者: hjl123456    时间: 2016-12-21 11:58
学习
作者: 963868863    时间: 2016-12-26 14:05
快看快看看看
作者: gao79097    时间: 2016-12-28 19:46

作者: kexuejia12    时间: 2016-12-29 23:29
11111111111111111
作者: zhbing    时间: 2017-5-24 16:14
学习一下

作者: theiiid    时间: 2017-6-22 07:18
果真是神 參拜
作者: jingjingls    时间: 2017-7-31 15:52
感谢分享!~
作者: vyqp    时间: 2017-8-1 09:13
学习了
作者: fenlijin    时间: 2017-8-21 23:37
g ghj j jg g g
作者: ashraf    时间: 2017-9-14 01:25

作者: gufeng0918    时间: 2017-12-23 12:35

作者: alisea    时间: 2017-12-27 21:07
代码很简单,但需要一点 Win32 API 的使用知识,这里我就不详解…
作者: xd01230    时间: 2018-4-19 02:05
耳热太热
作者: wodeqq381155    时间: 2018-4-21 17:02
看看呢
作者: saina6281    时间: 2018-4-29 18:31
- 利用数组实现的《线程变




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1