易语言 线程消息队列

.版本 2

.程序集 程序集1
.程序集变量 bInline, 逻辑型

.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 可以根据您的需要返回任意数值

.子程序 _临时子程序
.局部变量 i, 整数型
.局部变量 threadid, 整数型
.局部变量 handle, 整数型

' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。

bInline = 真
handle = CreateThread (0, 0, &子程序1, 0, 0, threadid)
.计次循环首 (1000, i)
    PostThreadMessage (threadid, i, 0, 0)
.计次循环尾 ()
WaitForSingleObject (handle, -1)


.子程序 子程序1, 整数型
.参数 参数, 整数型
.局部变量 msg, MSG
.局部变量 bRet, 整数型


.循环判断首 ()
    bRet = GetMessage (msg, 0, 0, 0)
    .如果 (bRet = -1)
        输出调试文本 (参数)
        延时 (1000)
    .否则

        输出调试文本 (“收到消息 ” + 到文本 (msg.message))
    .如果结束

.循环判断尾 (bInline)





返回 (0)


这样很好用

易语言是一种面向过程的编程语言,它并不直接支持多线程编程。但是,我们可以通过使用任务队列来模拟多线程的效果。 任务队列是一种数据结构,用于存储待执行的任务。在易语言中,我们可以使用数组或链表来实现任务队列。具体实现步骤如下: 1. 创建一个任务队列,用于存储待执行的任务。 2. 创建一个线程,用于从任务队列中取出任务并执行。 3. 在线程中,将需要执行的任务添加到任务队列中。 4. 线程会循环地从任务队列中取出任务并执行,直到任务队列为空。 以下是一个简单的易语言线程任务队列的示例代码: ``` ' 定义任务队列 Dim taskQueue() As String ' 定义互斥锁 Dim mutex As Integer ' 定义线程函数 Function ThreadFunc() While True ' 加锁 Lock mutex ' 判断任务队列是否为空 If UBound(taskQueue) > 0 Then ' 取出任务并执行 Dim task As String task = taskQueue(1) Call ExecuteTask(task) ' 移除已执行的任务 For i = 1 To UBound(taskQueue) - 1 taskQueue(i) = taskQueue(i + 1) Next i ReDim Preserve taskQueue(UBound(taskQueue) - 1) End If ' 解锁 Unlock mutex ' 等待一段时间再继续执行 Sleep 100 Wend End Function ' 执行任务的函数 Sub ExecuteTask(task As String) ' 执行任务的代码 End Sub ' 程序 Sub Main() ' 初始化任务队列和互斥锁 ReDim taskQueue(0) mutex = CreateMutex() ' 创建线程 Dim threadId As Integer threadId = CreateThread(AddressOf ThreadFunc) ' 添加任务到任务队列 Lock mutex taskQueue(UBound(taskQueue) + 1) = "Task 1" taskQueue(UBound(taskQueue) + 1) = "Task 2" Unlock mutex ' 等待一段时间,让线程执行任务 Sleep 1000 ' 结束线程 TerminateThread threadId ' 销毁互斥锁 DestroyMutex mutex End Sub ``` 以上代码中,我们使用了一个数组作为任务队列,并使用互斥锁来保证线程安全。程序中创建了一个线程,并向任务队列中添加了两个任务。线程会循环地从任务队列中取出任务并执行,直到任务队列为空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值