Cocoa 为特定单例创建大型中央调度队列

Cocoa 为特定单例创建大型中央调度队列,cocoa,queue,grand-central-dispatch,Cocoa,Queue,Grand Central Dispatch,我有一个用于创建应用程序范围报告的单例。当应用程序将数据传递给singleton时,singleton会格式化数据以在报告中使用。我使用grandcentraldispatch,以便报表创建不在主线程上 我的问题是,在初始化singleton时创建一个只由singleton使用的大型中央调度队列是否不好。我希望单线程与单线程关联,因为如果我不这样做,报表的某些部分很容易失去同步,从而破坏报表的格式。如果这是一个糟糕的做法,那么还有什么其他模式适合这个问题,但给我快速和易于使用的代码 你的方法是正

我有一个用于创建应用程序范围报告的单例。当应用程序将数据传递给singleton时,singleton会格式化数据以在报告中使用。我使用grandcentraldispatch,以便报表创建不在主线程上


我的问题是,在初始化singleton时创建一个只由singleton使用的大型中央调度队列是否不好。我希望单线程与单线程关联,因为如果我不这样做,报表的某些部分很容易失去同步,从而破坏报表的格式。如果这是一个糟糕的做法,那么还有什么其他模式适合这个问题,但给我快速和易于使用的代码

你的方法是正确的。串行调度队列用于同步对特定资源的访问。他们处理请求FIFO,使其适合您的要求。我认为单例部分在这里没有那么重要。

您的方法是正确的。串行调度队列用于同步对特定资源的访问。他们处理请求FIFO,使其适合您的要求。我认为单例的部分在这里没有那么重要。

我觉得不对的是,我建议创建一个GCD队列,在单例实例化后保留它,然后不做任何其他事情。这只是为了从单例中获得一个对队列的就绪引用,而不必传递引用。奇怪的是,如果不使用单例,GCD队列会在一段时间内无所事事。这种方法是明智的还是有更好的方法?排队有什么问题?分派队列是轻量级对象,考虑到用户创建的队列没有附加线程,这不应该引起太多关注。我将这些队列视为负责处理线程管理的全局队列的路由器。我认为使用GCD是一种适合您所做工作的方法。这只是我的一点,但我觉得不对的是,我建议创建一个GCD队列,一旦它被实例化,它将与singleton一起保存,然后不做任何其他事情。这只是为了从单例中获得一个对队列的就绪引用,而不必传递引用。奇怪的是,如果不使用单例,GCD队列会在一段时间内无所事事。这种方法是明智的还是有更好的方法?排队有什么问题?分派队列是轻量级对象,考虑到用户创建的队列没有附加线程,这不应该引起太多关注。我将这些队列视为负责处理线程管理的全局队列的路由器。我认为使用GCD是一种适合您所做工作的方法。不过这只是我的一点。