草庐IT

event-dispatch-thread

全部标签

iOS - 调用 dispatch_async 时没有堆栈跟踪

我已经创建了一些示例代码来演示我的问题。-(void)test{void(^handler)(void)=^{NSArray*test=[NSArrayarray];[testobjectAtIndex:5];};handler=[handlercopy];dispatch_async(dispatch_get_main_queue(),handler);}当我调用测试方法时,我没有得到堆栈跟踪。调试器停在main.m并突出显示此行intretVal=UIApplicationMain(argc,argv,nil,NSStringFromClass([FantasyUniversalA

ios - 是 [WkInterfaceDevice addCachedImage :] Thread Safe?

我可以从后台线程向WkInterfaceDevice图像缓存添加图像吗?如果API在后台线程中可以安全使用,我找不到任何文档。谢谢!斯蒂芬 最佳答案 根据开发者论坛上一位Apple员工的说法,您可以在后台线程中使用addCachedImage:。事实上,这就是我在我的应用程序中使用它的方式。 关于ios-是[WkInterfaceDeviceaddCachedImage:]ThreadSafe?,我们在StackOverflow上找到一个类似的问题: http

ios - 使用 GCD 复制大文件 - Dispatch IO 消耗大量内存

我正在将大型文件复制操作从NSStream转换为使用GCD的调度IO实现。当将两个1GB的文件一起复制到一个2GB的文件中时,应用程序使用GCD会消耗2GB的内存。NSStream实现仅占用50MB。在Instruments中,我可以看到start_wqthread调用分配了1MBblock,正如我为调度IO高水位线请求的block大小,但在写入输出流后没有被释放,他们四处闲逛。缓冲区写入输出流后如何释放缓冲区?如果我在Xcode中创建一个全新的OSXCocoa应用程序并将以下代码粘贴到applicationDidFinishLaunching:方法中,它将消耗500-2000MB的内

ios - 将一个快速线程注册为 pj_thread

我目前正在使用pjSIP和swift开发iOS应用。我在.c文件中找到了一个调用方法,顺其自然voidmakeCall(constchar*destUri){...status=pjsua_call_make_call(...}我得到了一个从主线程调用的快速方法,它从C文件调用makeCall函数。如果我这样做,应用程序会崩溃,并提示我需要在调用更多pjLib函数之前将线程注册到pjSIP。要将线程注册到pjSIP,我需要调用函数pj_thread_register我尝试将线程添加为UnsafeMutablePointer。我的电话现在是这样的:voidmakeCall(constch

objective-c - 分派(dispatch)到主队列总是失败

我正在尝试通过iOS上的GCD将一些代码分派(dispatch)到主队列,但即使是最简单的测试也总是失败。最后归结为:staticconstintTICK_INTERVAL=1;#pragmaUIApplicationDelegateimplementation-(void)doTick{if(![NSThreadisMainThread]){NSLog(@"Tryingtodispatch...");dispatch_sync(dispatch_get_main_queue(),^{NSLog(@"test...");});}}-(void)startUpdate{dispatch_

ios编程: Using threads to add multiple images to library

在Xcode中,当我尝试将超过5张图片添加到我的库时,出现以下错误:ErrorDomain=ALAssetsLibraryErrorDomainCode=-3301"Writebusy"UserInfo=0xa706aa0{NSLocalizedRecoverySuggestion=Trytowriteagain,NSLocalizedFailureReason=Therewasaproblemwritingthisassetbecausethewritingresourcesarebusy.,NSLocalizedDescription=Writebusy,NSUnderlyingE

(二)RT-Thread入门——线程管理

目录线程管理线程管理特点线程工作机制 线程控制块线程属性线程栈线程状态线程优先级时间片线程入口函数无限循环模式顺序执行或有限次循环模式线程错误码线程状态切换线程操作创建动态线程删除 初始化静态线程脱离获得当前线程让出处理器资源睡眠控制线程挂起线程恢复线程设置钩子函数运行代码线程管理        RT-Thread是一个嵌入式实时多线程操作系统,基本属性之一是支持多任务,也就是允许多个任务同时运行,但是这并不意味着处理器在同一时刻真地执行了多个任务。事实上,这是通过多线程的方式实现的。线程是RT-Thread中最基本的调度单位,我们可以设置不同的优先级,重要的任务可设置相对较高的优先级,非重要

iphone - 为什么tableView是:cellForRowAtIndexPath: being called on a background thread?

在我的iPhone应用程序中,我偶尔会看到由tableView:cellForRowAtIndexPath:在后台线程上调用导致的崩溃。显然,这不应该发生。我没有调用它,我的对象是UITableView的委托(delegate),基础正在调用它——我在堆栈中看到的唯一有问题的线程是-_WebTryThreadLock(bool)-_dequeuReusableViewOfType-tableView:cellForRowAtIndexPath:-_createPreparedCellForGlobalRow:withIndexPath-_pthread_qathread崩溃发生在Web

编译器安全专题 Clang Thread Safety Analysis

前言对于C++多线程程序开发者来说,确保程序的正确性和稳定性是至关重要的。但是,多线程程序往往会面临复杂的并发问题,如数据竞争、死锁等,这些问题难以被发现和解决,容易导致程序崩溃或出现不可预期的错误。为了提高多线程程序的质量和性能,我们需要使用一些工具来检测和避免这些潜在问题。在这方面,ClangThreadSafetyAnalysis是一个非常有用的工具,它可以帮助我们在编译时静态地分析C++代码,检测并发问题。ClangThreadSafetyAnalysis是LLVM/Clang编译器的一部分,可以在编译时将分析结果输出到编译器的错误信息中,提供给开发者及时发现并解决并发问题。Clang

ios - EXC_BAD_ACCESS 在 dispatch_async 中使用 "freed"self 时

我有一个使用iOS7中新的SpriteKit编写的游戏。我有一个自定义的SKSpriteNode,它可以获取并显示Facebook个人资料图片。但是,由于加载图片可能需要一些时间。我尝试在初始化节点时在后台加载图片,并仅在加载图片时显示它。这是我写的代码片段:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{//CodetoloadFacebookProfilepicture//...SKSpriteNode*fbFrame=[SKSpriteNodespriteNodeWithT