V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yellowV2ex
V2EX  ›  问与答

objc如何获取一个固定的非主线程?

  •  
  •   yellowV2ex · 2013-04-24 18:15:24 +08:00 · 2689 次点击
    这是一个创建于 4263 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于多个栏目,需要同时初始化并读sqlite的表,内容浏览时有事也会一起更新多个表。
    现在是用 `performSelectorInBackground` 读取数据库,完成后通知主线程做一些操作,
    但多个 `performSelectorInBackground` 同时读数据库时,有时就会报错跳出,断点的位置返回是数据库正在操作或锁定无法介入。

    原因大概是多个线程同一时间对数据库进行操作,导致冲突报错。
    全部数据库都改在主线程 `performSelectorOnMainThread` 的话,他们就会顺序执行不会报错,但在主线程他们就会导致界面卡顿。

    如何获取一个固定非主线程,然后让一些方法都到一个固定的线程里执行呢?
    4 条回复    1970-01-01 08:00:00 +08:00
    alexrezit
        1
    alexrezit  
       2013-04-24 18:18:23 +08:00   ❤️ 1
    用一个 shared instance, 自己创建一个 queue.
    RoCry
        2
    RoCry  
       2013-04-24 19:03:11 +08:00   ❤️ 1
    dispatch_queue_t theQueue = dispatch_queue_create("com.rocry.someQueueName", DISPATCH_QUEUE_SERIAL);
    ytzong
        3
    ytzong  
       2013-04-24 20:11:33 +08:00 via iPad
    果断Fmdb的queue啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3510 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:45 · PVG 08:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.