TC官方合作论坛

标题: 问个临界区的问题~! [打印本页]

作者: djzlove129    时间: 2014-4-14 22:53
标题: 问个临界区的问题~!
我写了个脚本,刚开始的时候,觉得以后改代码好改,就把游戏的日常任务中的每个小任务都些了一个t文件,然后在主t文件中调用,现在问题来了,每个子t文件(小任务)都是用线程调用,我使用临界区的话,差不多要开20线程,然后就老是出问题,请问我是不是t文件写多了?是不是日常任务写一个t会比较好?如果只写一个t,代码几千行,不好修改啊,时间长了,连自己都看不懂了~!纠结....
作者: cylhb    时间: 2014-4-15 01:43
分开太多菜不好管理吧
问题多不一定就跟太多文件有关啊,具体是什么问题,什么情况下出现,描述清楚比较好找原因
作者: 250366688    时间: 2014-4-15 06:25
感觉跟t文件多少没关系。脚本其实都用三层架构,一个主调用层,一个主公用库,再加若干大功能库,一般的代码少的直接放在调用层就行了,如果大项目 比如自动主线什么的额外写个t
作者: tccejpo001    时间: 2014-4-15 09:25
使用临界区并不是造成你要开多少线程的问题,而是你多个线程读写数据时要用临界区.就比如你线程1要写变量1赋值为1,线程2要读变量1的最新值,变量1初始化是为0,如果你不用临界区,则有可能你线程2读出来的值还是0,而你临界区之后,才能保证你在进行读写操作时数据是最新的,也避免了多个线程调用同一个赋值操作时造成意外的结果,
作者: q273814    时间: 2014-4-15 13:29
呃 20个线程 你电脑真扛得住 至于t文件 你可以这样 1-10级的放一个t文件 10-20级放一个t文件 当然 如果不是很多的话 最好放一个t文件了
几千行代码真的不算多 我朋友在公司写的"一"条数据库查询语句都有几千行了 至于程序代码 呵呵 你是没见过大的项目 上万行都很正常
至于你说"不好修改啊,时间长了,连自己都看不懂了~!纠结...." 打代码第一件事注释 先写了注释才能开始写代码 否则你的程序就是垃圾
写的再好也是垃圾 一个优秀的程序必须要有注释 不然自己写的东西时间长了自己都不认识 不利于后期维护
有的时候如果遇到买源码的 一看什么都不懂 那怎么行
作者: q273814    时间: 2014-4-15 13:30
临界区是个好东西 但是使用要小心
还有你线程太多了
作者: djzlove129    时间: 2014-4-15 13:39
本帖最后由 djzlove129 于 2014-4-15 13:41 编辑
q273814 发表于 2014-4-15 13:30
临界区是个好东西 但是使用要小心
还有你线程太多了


我线程是有点多,所以我才用临界区啊,我所有的任务线程(每个小任务都是一个线程)加起来的确有20多个线程,我的想法就是,小任务线程全部进入一个临界区,然后每次就只能启动一个线程,其他的我也不知道是挂起了,还是暂停了,也就是每次只做一个小任务,完成一个任务后线程离开临界区,临界区在随机开一个线程进入,这样的思路不对吗?
作者: q273814    时间: 2014-4-15 13:43
djzlove129 发表于 2014-4-15 13:39
我线程是有点多,所以我才用临界区啊,我所有的任务线程(每个小任务都是一个线程)加起来的确有20多个线程 ...

为嘛 一个任务开一个线程啊
难道你的角色能同时做2个任务啊
作者: djzlove129    时间: 2014-4-15 13:45
q273814 发表于 2014-4-15 13:43
为嘛 一个任务开一个线程啊
难道你的角色能同时做2个任务啊

一个任务是一个功能,功能我是用线程调用的,里面有循环,不用线程不行
作者: q273814    时间: 2014-4-15 13:51
- - 你开一个线程 调用一个功能 这个功能是线程调用 与你程序的界面线程是无关的 在这个功能里调用别的功能就不需要开线程了 直接调用
作者: q273814    时间: 2014-4-15 13:51
除非是 自动复活 掉线登陆这样的 才需要单独开线程啊 或者你是多开之类的
作者: djzlove129    时间: 2014-4-15 13:54
q273814 发表于 2014-4-15 13:51
除非是 自动复活 掉线登陆这样的 才需要单独开线程啊 或者你是多开之类的

意思是不能用线程调用?我是觉得,临界区有个随机性,每次做任务的顺序都不同,可以避免行为监测...
作者: q273814    时间: 2014-4-15 13:58
djzlove129 发表于 2014-4-15 13:54
意思是不能用线程调用?我是觉得,临界区有个随机性,每次做任务的顺序都不同,可以避免行为监测... ...

可以用 只是没必要 写个脚本没必要开那么多线程 这样天天挂着你电脑能撑几个月啊 挂来的钱都不够修电脑的 至于任务顺序 要是这样也行为检测 - - 那是不是手动玩的都不能按照顺序做任务了
作者: q273814    时间: 2014-4-15 13:59
临界区是个好东西但是仅限于 线程安全方面
作者: q273814    时间: 2014-4-15 14:01
[attach]15385[/attach]

作者: djzlove129    时间: 2014-4-15 14:25
q273814 发表于 2014-4-15 14:01

跨t文件,跨空间,怎么调用功能?
作者: q273814    时间: 2014-4-15 14:36
空间名.功能名




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