|
|
<火山程序 类型 = "通常" 版本 = 1 />
方法 线程池类_对象任务回调 <接收事件 类型 = 整数 注释 = " 线程池\"投递对象\"的回调函数,请在本事件内写线程方法." 注释 = "传入的用户对象会在本次任务结束后自动释放."
返回值注释 = "返回值无意义" 折叠>
参数 来源对象 <类型 = 线程池类 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
参数 用户标记 <类型 = 整数 注释 = "用户自定义标记值,建议用来区分线程的用途.">
参数 用户对象 <类型 = 对象类 注释 = " 用户投递的自定义对象,请自行强制到原来的对象类型再使用,如:" 注释 = " 1. 对象变量 = (自定义对象)用户对象"
注释 = " 2. ((自定义对象)用户对象).成员" 注释 = " 方法1会将用户对象强制转换类型后复制到新变量,这会略增加内存的占用;"
注释 = " 方法2不会创建新的对象实例,但写起来比较麻烦.">
参数 用户数据 <类型 = 变整数 注释 = "如果是指针且以后不再使用的话,建议在本事件结束前释放掉,以避免内存泄漏.">
{
如果 (来源对象 == 线程池)
{
如果 (用户标记 == 0)
{
循环写 ("测试:")
}
如果 (用户标记 == 1)
{
循环读 ()
}
}
返回 (0)
}
方法 循环写 <折叠>
参数 参_文本 <类型 = 文本型>
{
变量 计次 <类型 = 整数 值 = 1>
写_是否退出 (假)
判断循环 (线程池.是否需要退出 () == 假)
{
计次 = 计次 + 1
置_数据文本 (参_文本 + 到文本 (计次))
如果 (线程池.执行任务数 >= 1)
{
写_是否退出 (真)
}
如果 (线程池.执行任务数 == 0)
{
写_是否退出 (假)
线程池.投递对象 (1, )
}
延时 (取随机数 (1, 5))
}
写_是否退出 (真)
调试输出 ("退出")
}
方法 循环读 <折叠>
{
判断循环 (读_是否退出 () == 假)
{
如果 (读_是否退出 () == 真)
{
调试输出 (取_数据文本 (), "1")
跳出循环
}
如果 (读_是否退出 () == 真)
{
调试输出 (取_数据文本 (), "2")
跳出循环
}
如果 (读_是否退出 () == 真)
{
调试输出 (取_数据文本 (), "3")
跳出循环
}
如果 (读_是否退出 () == 真)
{
调试输出 (取_数据文本 (), "4")
跳出循环
}
如果 (读_是否退出 () == 真)
{
调试输出 (取_数据文本 (), "5")
跳出循环
}
如果 (读_是否退出 () == 真)
{
调试输出 (取_数据文本 (), "6")
跳出循环
}
}
调试输出 (取_数据文本 () + "循环读退出")
}
方法 写_是否退出 <折叠>
参数 判断 <类型 = 逻辑型>
{
线程_判断锁.互斥自动锁 ()
线程_判断 = 判断
}
方法 读_是否退出 <类型 = 逻辑型 折叠>
{
线程_判断锁.互斥自动锁 ()
返回 (线程_判断)
}
方法 置_数据文本 <折叠>
参数 文本 <类型 = 文本型>
{
文本锁.互斥自动锁 ()
成员_文本 = 文本
}
方法 取_数据文本 <类型 = 文本型>
{
文本锁.互斥自动锁 ()
返回 (成员_文本)
}
|
|