zhilong301 发表于 2019-1-2 15:42:33

多线程崩溃问题

我启动下面这两个子程序线程,让他无限循环,但是运行一段时间程序会崩溃。
而我尝试将这两个子程序 合并为一个子程序 去起动单线程,却不会崩溃,但是执行的效率大大降低。
麻烦老师帮我解答一下,哪个地方可能造成崩溃了。

.版本 2
.支持库 iext
.支持库 spec

.子程序 找好友动态
.局部变量 网址, 文本型
.局部变量 提交方式, 整数型
.局部变量 提交信息, 文本型
.局部变量 访问内容, 文本型
.局部变量 文章, 文本型, , "0"
.局部变量 内容, 文本型
.局部变量 i, 整数型
.局部变量 文章编号, 文本型
.局部变量 用户编号, 文本型
.局部变量 更多文章网址, 文本型
.局部变量 文章数量, 整数型
.局部变量 原码分析, 文本型
.局部变量 是否加入, 逻辑型
.局部变量 j, 整数型
.局部变量 sy, 整数型
.局部变量 循环, 逻辑型
.局部变量 数量, 整数型
.局部变量 略过, 逻辑型
.局部变量 uid, 文本型
.局部变量 好友名, 文本型

线程_初始化COM库 ()
循环 = 真
.判断循环首 (循环 = 真)
    .如果真 (选择框_爬好友.选中 = 真 且 登入状态 = 真)
      .计次循环首 (取数组成员数 (好友数据), i)
            uid = 文本_取右边 (好友数据 , “|”)
            好友名 = 文本_取左边 (好友数据 , “|”)
            .如果真 (选择框_爬好友.选中 = 真 且 登入状态 = 真)
                清除数组 (文章)
                透明标签14.标题 = 疯狂_自动转换语言 (“正在爬好友动态:”) + 好友名
                网址 = “https://m.facebook.com/” + uid
                提交方式 = 0
                访问内容 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (网址, 提交方式, 提交信息, cookies, , , , , )))
                文本_取中间_批量 (访问内容, #找文章, 编码_简体到繁体 (“完整动态”), 文章, 假, , “==”)' 批量取文章
                .计次循环首 (取数组成员数 (文章), i)
                  略过 = 假
                  原码分析 = 文本_替换 (文章 , , , , “{”, “{”, “}”, “}”, “"”, #引号)
                  文章编号 = 文本_取出中间文本 (原码分析, #文章编号前, #引号)
                  用户编号 = 文本_取出中间文本 (原码分析, #发文者编号前, #引号)

                  .如果真 (文章编号 ≠ “” 且 用户编号 ≠ “” 且 寻找文本 (编辑框1.内容, 用户编号, , 假) ≠ -1)
                        网址 = “https://m.facebook.com/” + 文章编号
                        提交方式 = 0
                        访问内容 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (网址, 提交方式, 提交信息, cookies, , , , , )))
                        .如果真 (寻找文本 (访问内容, 编码_简体到繁体 (“生”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“日”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“乐”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“乐”), , 假) ≠ -1)
                            略过 = 真
                        .如果真结束
                        .如果真 (略过 = 假 且 寻找文本 (访问内容, “groups”, , 假) = -1 且 寻找文本 (访问内容, “/a/like”, , 假) ≠ -1 且 寻找文本 (访问内容, “birthday”, , 假) = -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“分享了”), , 假) = -1)
                            调试输出 (文章编号, 用户编号, “11111”)
                            是否加入 = 真
                            线程_进入许可区 (许可1)
                            加入成员 (文章数据, 文章编号 + “|” + 用户编号)
                            数组_去重复1 (文章数据)
                            线程_退出许可区 (许可1)
                        .如果真结束

                  .如果真结束
                  处理事件 ()
                .计次循环尾 ()
            .如果真结束
            处理事件 ()
      .计次循环尾 ()
    .如果真结束
    处理事件 ()
.判断循环尾 ()




.子程序 找文章
.局部变量 循环次数, 整数型
.局部变量 网址, 文本型
.局部变量 提交方式, 整数型
.局部变量 提交信息, 文本型
.局部变量 访问内容, 文本型
.局部变量 文章, 文本型, , "0"
.局部变量 内容, 文本型
.局部变量 i, 整数型
.局部变量 文章编号, 文本型
.局部变量 用户编号, 文本型
.局部变量 更多文章网址, 文本型
.局部变量 循环, 逻辑型
.局部变量 z, 整数型
.局部变量 好友数量, 整数型
.局部变量 j, 整数型
.局部变量 sy, 整数型
.局部变量 是否加入, 逻辑型
.局部变量 原码分析, 文本型
.局部变量 略过, 逻辑型

线程_初始化COM库 ()
循环 = 真
.判断循环首 (循环 = 真)
    .如果真 (选择框_爬动态.选中 = 真 且 登入状态 = 真)
      清除数组 (文章)
      透明标签13.标题 = 疯狂_自动转换语言 (“正在爬动态页面:第1页”)
      网址 = “https://m.facebook.com/”
      提交方式 = 0
      访问内容 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (网址, 提交方式, 提交信息, cookies, , , , , )))
      访问内容 = #找文章 + 文本_取出中间文本 (访问内容, #找文章, 编码_简体到繁体 (“更多动态”), , 假)' 取出文章源码
      更多文章网址 = “https://m.facebook.com/stories.php?” + 文本_取出中间文本 (访问内容, #更多文章, #引号, , 假)
      更多文章网址 = 文本_替换 (更多文章网址, , , 假, “amp;”, “”)
      文本_取中间_批量 (访问内容, #找文章, 编码_简体到繁体 (“完整动态”), 文章, 假, , “==”)' 批量取文章
      .计次循环首 (取数组成员数 (文章), i)
            略过 = 假
            原码分析 = 文本_替换 (文章 , , , , “{”, “{”, “}”, “}”, “"”, #引号)
            文章编号 = 文本_取出中间文本 (原码分析, #文章编号前, #引号)
            用户编号 = 文本_取出中间文本 (原码分析, #发文者编号前, #引号)

            .如果真 (文章编号 ≠ “” 且 用户编号 ≠ “” 且 寻找文本 (编辑框1.内容, 用户编号, , 假) ≠ -1)
                网址 = “https://m.facebook.com/” + 文章编号
                提交方式 = 0
                访问内容 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (网址, 提交方式, 提交信息, cookies, , , , , )))
                .如果真 (寻找文本 (访问内容, 编码_简体到繁体 (“生”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“日”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“乐”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“乐”), , 假) ≠ -1)
                  略过 = 真
                .如果真结束
                .如果真 (略过 = 假 且 寻找文本 (访问内容, “groups”, , 假) = -1 且 寻找文本 (访问内容, “/a/like”, , 假) ≠ -1 且 寻找文本 (访问内容, “birthday”, , 假) = -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“分享了”), , 假) = -1)
                  调试输出 (文章编号, 用户编号, “22222”)
                  是否加入 = 真
                  线程_进入许可区 (许可1)
                  加入成员 (文章数据, 文章编号 + “|” + 用户编号)
                  数组_去重复1 (文章数据)
                  线程_退出许可区 (许可1)
                .如果真结束
                辅助延时 (5)
            .如果真结束
            处理事件 ()
      .计次循环尾 ()
      .如果真 (登入状态 = 真)
            .计次循环首 (9, z)
                辅助延时 (1, 1)
                清除数组 (文章)
                透明标签13.标题 = 疯狂_自动转换语言 (“正在爬动态页面:第” + 到文本 (z + 1) + “页”)
                网址 = 更多文章网址
                ' 调试输出 (网址)

                提交方式 = 0
                访问内容 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (网址, 提交方式, 提交信息, cookies, , , , , )))
                访问内容 = #找文章 + 文本_取出中间文本 (访问内容, #找文章, 编码_简体到繁体 (“更多动态”), , 假)' 取出文章源码
                更多文章网址 = “https://m.facebook.com/stories.php?” + 文本_取出中间文本 (访问内容, #更多文章, #引号, , 假)
                更多文章网址 = 文本_替换 (更多文章网址, , , 假, “amp;”, “”)
                文本_取中间_批量 (访问内容, #找文章, 编码_简体到繁体 (“完整动态”), 文章, 假, , “==”)' 批量取文章
                .计次循环首 (取数组成员数 (文章), i)
                  略过 = 假
                  原码分析 = 文本_替换 (文章 , , , , “{”, “{”, “}”, “}”, “"”, #引号)
                  文章编号 = 文本_取出中间文本 (原码分析, #文章编号前, #引号)
                  用户编号 = 文本_取出中间文本 (原码分析, #发文者编号前, #引号)
                  .如果真 (文章编号 ≠ “” 且 用户编号 ≠ “” 且 寻找文本 (编辑框1.内容, 用户编号, , 假) ≠ -1)
                        网址 = “https://m.facebook.com/” + 文章编号
                        提交方式 = 0
                        访问内容 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (网址, 提交方式, 提交信息, cookies, , , , , )))
                        .如果真 (寻找文本 (访问内容, 编码_简体到繁体 (“生”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“日”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“乐”), , 假) ≠ -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“乐”), , 假) ≠ -1)
                            略过 = 真
                        .如果真结束
                        .如果真 (略过 = 假 且 寻找文本 (访问内容, “groups”, , 假) = -1 且 寻找文本 (访问内容, “/a/like”, , 假) ≠ -1 且 寻找文本 (访问内容, “birthday”, , 假) = -1 且 寻找文本 (访问内容, 编码_简体到繁体 (“分享了”), , 假) = -1)
                            调试输出 (文章编号, 用户编号, “333333”)
                            是否加入 = 真
                            线程_进入许可区 (许可1)
                            加入成员 (文章数据, 文章编号 + “|” + 用户编号)
                            数组_去重复1 (文章数据)
                            线程_退出许可区 (许可1)
                        .如果真结束
                        辅助延时 (5)
                  .如果真结束
                  处理事件 ()
                .计次循环尾 ()

                处理事件 ()
            .计次循环尾 ()
      .如果真结束

    .如果真结束
    处理事件 ()
.判断循环尾 ()

易辅 发表于 2019-1-3 14:43:22

公共资 源不要使用 比如 你上面用的标签,组合框 ,选择框之类的
页: [1]
查看完整版本: 多线程崩溃问题