草庐IT

c - Linux pthread_suspend

coder 2023-06-17 原文

看起来 linux 没有实现 pthread_suspend 并继续,但我真的需要 em。

我试过cond_wait,但是太慢了。被线程化的工作大多在 50us 内执行,但偶尔会执行超过 500ms。 cond_wait 的问题有两个。互斥锁定所花费的时间与微秒级执行时间相当,我不需要锁定。其次,我有很多工作线程,我真的不想在需要唤醒它们时创建 N 个条件变量。

我确切地知道哪个线程正在等待哪个工作并且可以 pthread_continue 该线程。一个线程知道什么时候没有更多的工作并且可以很容易地 pthread_suspend 自己。这将不使用锁定,避免踩踏,并且更快。问题是……没有 pthread_suspend 或 _continue。

有什么想法吗?

最佳答案

让线程等待一个特定的信号。

使用pthread_sigmasksigwait .

关于c - Linux pthread_suspend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2994216/

有关c - Linux pthread_suspend的更多相关文章

  1. windows - 检测 "suspended"Windows 8/10 进程 - 2

    Windows8/10中的UWP(或“Metro”)应用程序不在前台时可以暂停。处于此状态的应用程序继续存在但不再消耗CPU时间。引入此更改似乎是为了提高平板电脑和手机等低功耗/存储设备的性能。检测处于这种状态的进程的最优雅、最简单的方法是什么?目前我可以看到2种可能的解决方案:调用NtQuerySystemInformation()并枚举每个进程和每个线程。如果所有线程都处于挂起状态,则进程被“挂起”。这种方法将需要大量代码,而且关键的是NtQuerySystemInformation()只是半文档化的,可能会在未来的操作系统中被删除。NtQueryInformationProces

  2. C# Threading.Suspend 已过时,线程已被弃用? - 2

    在我的应用程序中,我正在通过另一个线程(GUI线程除外)执行文件读取。有两个按钮分别用于暂停和恢复线程。privatevoidBtnStopAutoUpd_Click(objectsender,EventArgse){autoReadThread.Suspend();}privatevoidBtnStartAutoUpd_Click(objectsender,EventArgse){autoReadThread.Resume();}但我正面临这个警告,Thread.Suspendhasbeendeprecated.PleaseuseotherclassesinSystem.Thread

  3. java - IntelliJ 调试 : Suspend whole VM then step on single thread - 2

    我正在调试一个有很多线程的应用程序。我的断点设置为暂停整个VM。当线程遇到其中一个断点时,我想使用StepOver。但这似乎会恢复整个虚拟机,直到该步骤完成。如果我可以只步进遇到断点的单个线程,那将非常有帮助。在IntelliJ11.1/Java6中有什么方法可以做到这一点吗?(希望我没有遗漏一些明显的东西......) 最佳答案 此功能已在IntelliJ16中添加(他的回答中引用的CrazyCoder问题已解决)更多细节在这里:https://blog.jetbrains.com/idea/2016/02/intellij-id

  4. java - 替代 Thread.suspend() 和 .resume() - 2

    我有一大段代码不是循环,只是执行一次但需要一些时间的命令列表。我需要它根据不断变化的boolean值随时暂停或终止它。我可以使用不同的线程来挂起、恢复和停止此代码,但这些方法已被弃用,因此我想避免使用它们。我可以检查每一行代码之间的boolean值,但我希望有一个更优雅的解决方案。有什么好的方法吗? 最佳答案 Icouldcheckthebooleanbetweeneverylineofcode,butIamhopingforamoreelegantsolution.Isthereagoodwaytodothis?很遗憾,没有。要替

  5. ios - TouchID "On"与 "On but suspended" - 2

    有没有办法确定是否已注册指纹但TouchID由于指纹验证失败次数过多而当前处于“暂停”状态? 最佳答案 错误代码可以与LAError类进行比较。funcerrorMessageForLAErrorCode(errorCode:Int)->String{varmessage=""switcherrorCode{caseLAError.AppCancel.rawValue:message="Authenticationwascancelledbyapplication"caseLAError.AuthenticationFailed.r

  6. android - 解释 Logcat 条目 : threadid=8: still suspended after undo (sc=1 dc=1 s=Y) - 2

    在我的应用程序启动后,我运行了大约十个AsyncTasks。有时模拟器需要很长时间才能启动这些任务。发生这种情况时,我会在日志cat中看到以下消息:D/dalvikvm(1983):threadid=8:撤消后仍然挂起(sc=1dc=1s=Y)当模拟器快速执行时,不会出现此消息。奇怪的是,这种行为今天发生了变化,没有任何修改。由于我已经明确地为模拟器分配了512mb内存,它不再非常慢~5分钟,现在是~5秒。在真实设备上,我的执行速度从来没有这么慢。我想了解这条日志猫消息的含义。我知Prop有指定id的线程已暂停并且在此状态下不工作。但为什么?撤消后?(sc=1dc=1s=Y)是什么意思

  7. ios - CLLocationManager didEnterRegion : with iBeacon while app is suspended - 2

    当我的应用程序进入我定义的信标区域时,我试图唤醒它(重新启动它),但我就是无法让它工作。这是我正在使用的步骤和代码。将“位置更新”后台模式设置为"is"。监控我的CLBeaconRegionNSUUID*uuid=[[NSUUIDalloc]initWithUUIDString:@"EBEFD083-70A2-47C8-9837-E7B5634DF524"];beaconRegion=[[CLBeaconRegionalloc]initWithProximityUUID:uuididentifier:@"daRegion"];beaconRegion.notifyEntryStateO

  8. ios - app进入suspended状态前执行后台任务 - 2

    我正在尝试在我的应用程序中执行有限长度后台任务。但是,截至目前,我的代码在应用程序暂停之前没有执行。我遵循了相当多的教程,这些教程声称以下内容是正确的,但显然我弄错了。相关代码应发布在下面(如果我遗漏了什么,请要求任何澄清):classManager{privatevarbackgroundTask:UIBackgroundTaskIdentifier=UIBackgroundTaskInvalidinit(){//AddobserverableofdetectingwhenappwillgotobackgroundNotificationCenter.default.addObser

  9. Android kotlin实战之协程suspend详解与使用 - 2

    前言        Kotlin是一门仅在标准库中提供最基本底层API以便各种其他库能够利用协程的语言。与许多其他具有类似功能的语言不同,async 与 await 在Kotlin中并不是关键字,甚至都不是标准库的一部分。此外,Kotlin的 挂起函数 概念为异步操作提供了比future与promise更安全、更不易出错的抽象。        kotlinx.coroutines 是由JetBrains开发的功能丰富的协程库。它包含本指南中涵盖的很多启用高级协程的原语,包括 launch、 async 等等。 如需了解其他kotlin用法,可查看如下:AndroidKotlin实战之高阶使用泛

  10. ios - 如何使用 CTCallCenter :setCallEventHandler: that occurred while the app was suspended? 获取调用事件 - 2

    CTCallCenter:setCallEventHandler:的文档指出:However,calleventscanalsotakeplacewhileyourapplicationissuspended.Whileitissuspended,yourapplicationdoesnotreceivecallevents.Whenyourapplicationresumestheactivestate,itreceivesasinglecalleventforeachcallthatchangedstate与这个问题相关的部分是Whenyourapplicationresumest

随机推荐