相关疑难解决方法(0)

iOS - 确保在主线程上执行

我想知道如何function主线程上调用我的.

如何确保function主线程上调用我的?

(这是我之前的一个问题).

xcode multithreading multitasking ios shared-resource

72
推荐指数
4
解决办法
11万
查看次数

iPhone:如何确定线程是否是主线程?

如何确定方法中的当前线程是主线程,还是只是异步创建的线程?身份证告诉我吗?

iphone objective-c

57
推荐指数
1
解决办法
2万
查看次数

检测代码是否在Objective-C中的主线程上运行的正确方法是什么?(IOS)

我的代码需要保证在主线程上运行某个操作,但调用可能来自后台线程.

为了检测后台的情况,我使用了以下内容:

- (void)selectorToRunInMainThread:(id)arguments
{
    // push to main thread
        if ([NSRunLoop currentRunLoop] != [NSRunLoop mainRunLoop])
        {
            [self performSelectorOnMainThread:@selector(selectorToRunInMainThread:) withObject:arguments waitUntilDone:NO];
            return;
        }

    /*
    ... function content ...
    */
}
Run Code Online (Sandbox Code Playgroud)

这适用于iOS 4和iOS 3.2,但不适用于iOS 3.1.3及更早版本.在这些早期版本中,该函数将继续在无限循环中调用.

将比较更改为:

if (![[NSRunLoop currentRunLoop] isEqualTo:[NSRunLoop mainRunLoop]])

没有效果,他们仍然永远不会比较相同的价值.

我找到了一个似乎有效的解决方案,但我想先看看其他人的建议.

iphone multithreading objective-c ios

45
推荐指数
1
解决办法
2万
查看次数

获取当前的调度队列?

我有一个方法应该支持从任何队列调用,并应该期望.它在后台线程本身运行一些代码,然后在它返回一个值的块参数时使用dispatch_get_main_queue.我不希望它强制它进入主队列,如果不是它进入方法时.有没有办法获得指向当前调度队列的指针?

iphone objective-c dispatch grand-central-dispatch ios

45
推荐指数
6
解决办法
4万
查看次数

在Python中检查当前线程是否是主线程

之前已经回答过Android,Objective CC++,但显然不适用于Python.如何可靠地确定当前线程是否是主线程?我可以想到一些方法,其中没有一个真正让我满意,认为它可以像比较它是否容易threading.MainThread.

检查线程名称

主线程实例化threading.py如下:

Thread.__init__(self, name="MainThread")
Run Code Online (Sandbox Code Playgroud)

所以可以做到

if threading.current_thread().name == 'MainThread'
Run Code Online (Sandbox Code Playgroud)

但是这个名字是固定的吗?我看过的其他代码检查了是否MainThread包含在线程名称的任何位置.

存储起始线程

我可以在程序启动的那一刻存储对起始线程的引用,即当时还没有其他线程.这绝对可靠,但对于这样一个简单的查询来说太麻烦了?

这样做有更简洁的方法吗?

python multithreading

31
推荐指数
2
解决办法
2万
查看次数

检测您何时进入/离开Xamarin.iOS中的主线程

在Xamarin/MonoTouch中是否有办法检测是否在主线程中调用了代码?

我正在寻找类似于Java的东西EventQueue.isEventDispatchThread()- 我在Swing编程中发现它assert不时(或有时候assert不是这样)很方便 - 确保模型不断更新并从EDT中读取,长时间运行的调用不会阻止UI.

我想在我的MonoTouch应用程序中做同样的事情,以确保不会从UI调用或包含各种代码InvokeOnMainThread.


更新:对于后来出现的人:来自JP的Obj-C回答如下.Xamarin/MonoTouch相当于NSThread.Current.IsMainThread.

multithreading xamarin.ios ios

22
推荐指数
1
解决办法
6448
查看次数