[远航笔记流水账]易大漠多线程初级教程086(4-7)


小知识:易语言的多行注释快捷键 ctrl+K 注释 ctrl+m是取消注释 用起来很顺手

4.易大漠多线程初级之传递参数

讲了下函数的参数的基础知识。。。。。不说了

5.易大漠多线程初级之多线程大漠传递简单应用

本节课只要说了一下  远航模块里面的专门为多线程准备的一个全局数组 [大漠多线程信息]

小知识:远航模块里面的专门为多线程准备的一个全局数组 [大漠多线程信息] 对这个全局数组的理解

先看看这个数组的结构

image

类型为 大漠线程信息  这个是远航模块内的自定义类型  该数组一上来就默认有999个元素

大漠线程信息 这个自定义类型结构如下

image

很明显 这个数组的每个元素下有个成员叫大漠 这个大漠的类型是大漠中文版

再看看以往我们的调用大漠 最常用的 全局大漠  类型也是大漠中文版

image

很明显 这个 大漠多线程信息 这个全局数组 每个元素的大漠成员都是一个大漠潜在的对象 只要我们以这样的形势来

大漠多线程信息[x].大漠.创建对象() 就可以创建一个真正的大漠对象  而且大漠多线程信息 是一个有999个元素的数组

这就意味着我们有999个潜在的大漠对象可供使用 正好对应多线程的各种需求 这个全局数组元素 还能记录 线程对应的id

不过可惜的是我没看到有记录对应 许可证 的成员属性。。有点可惜 希望向后学习能解决这个问题


大漠多线程信息创建大漠对象 线程 和其他相关的基本结构


.版本 2

.计次循环首 (5, i)
    ' 1 创建该线程下的大漠对象
    大漠多线程信息 [i].大漠.创建对象 ()
    ' 2判断下是否创建成功
    .如果真 (大漠多线程信息 [i].大漠.取插件版本="")
        信息框 (“大漠多线程信息[” + 到文本 (i) + “]创建大漠对象失败”, 0, , )
        结束 ()
    .如果真结束
    ' 3 再创建对应的线程 并把线程id记录到  大漠多线程信息 [i].线程句柄 里面
    ' 4 如果可以创建下对应的许可证的更好了 把许可证也记录到 大漠多线程信息 [i] 的成员里面 可惜暂时没有
.计次循环尾 ()


6.1易大漠多线程初级之多窗口执行相同任务一

留个纪念:以实例来 用 大漠多线程信息 数组 来实现多线程大漠操作的例子 和老师的有点差异 我这里多加了一个每个线程增加一个许可证的额外操作 不过整体还是非常粗糙

image

开启多线程按钮下的代码

image


线程内的固定结构

image

窗口销毁事件或者关闭线程按钮的点击事件

image


6.2易大漠多线程初级之多窗口执行相同任务二

小知识:用进程名获取对应的所有窗口的句柄

精益模块的命令

image

第一个是返回的整数型数组 元素内容可以直接拿来用

第二个是返回的文本型数组 元素内容需要到整数函数处理才可以


疑问  共用的 文件夹和字库文件  一旦多线程同时使用 如何处理? 需不需要许可证来控制。


小知识:对多线程下的取随机数() 的理解

以前对这个 取随机数() 有个错误的任务 认为这个函数内置了置随机数种子 今天再多线程下测试 发现不对

如果我把 置随机数种子 () 放到 窗口启动事件里面 在线程函数内部不加这个 置随机数种子 ()  那么结果是这样

image

如果我在线程函数内部加上  置随机数种子 ()  那么结果就正常了 是真的随机数

image

结论:线程函数内部使用随机数相关函数 还是要在线程函数内部  置随机数种子 ()   主代码那边 声明的 置随机数种子 () 对线程内无效


本节课内容和上节课差不多


不过是用于实际了极光游戏过于麻烦  我就以记事本为窗口 实现多线程控制所有记事本 向里面写入随机字母

基本上之前的代码一样 不过就是记事本写入内容需要是记事本的子窗口绑定才可以  其他的基本没变化

image


7.易大漠多线程初级之多窗口执行不同任务

基本思路是 凭借 线程_启动脚本的第二个参数传递给 线程函数的值的不同来进行不同的操作

比如以前游戏 组队是5个人  其中一个是队长 队长的操作很明显和其他人的普通队员的操作要区分开来

我们传递进线程函数里面的参数 从1开始到最后 分别对应一个窗口 如果这个参数能被5整除 比如5  10 15 20 我们就认为这个参数对应的窗口要执行

队长的操作而不是队员操作 在线程函数内部

image



123

猜你喜欢

转载自www.cnblogs.com/zjl8455482/p/10456297.html
今日推荐