我只是想知道C++ 11中是否有任何锁定策略可以防止线程饥饿.
我有一堆线程正在竞争一个互斥锁.现在,我的问题是,离开临界区的线程立即开始竞争相同的互斥锁,并且大部分时间都获胜.因此,等待互斥锁的其他线程正在挨饿.
我不想让线程,留下一个关键部分,睡眠一段时间,让其他线程有机会锁定互斥锁.
我认为必须有一些参数可以为等待互斥锁的线程启用公平锁定,但我无法找到任何合适的解决方案.
好吧,我找到了std :: this_thread :: yield()函数,它假设重新调度线程执行的顺序,但它只提示调度程序线程,如果重新调度线程,则依赖于调度程序线程实现.
有没有办法如何为在C++ 11中等待相同互斥锁的线程提供公平锁定策略?通常的策略是什么?
谢谢
我C++11在Linux平台上编写了一个简单的多线程应用程序,我希望通过发送SIGINT信号来终止服务器及其运行的线程.
显然我的服务器应用程序使用C++ 11(std::thread等)的线程支持.虽然我在C++ 11(std::signal)中找到了对信号处理的一些支持,但我找不到在多线程环境中处理信号的任何支持.
所以我的问题是 - 有没有办法如何在多线程应用程序中处理信号,C++11或者我是否必须依赖,pthreads因为我的应用程序需要处理信号?