小编Tom*_*cek的帖子

如何在C++ 11中防止线程饥饿

我只是想知道C++ 11中是否有任何锁定策略可以防止线程饥饿.

我有一堆线程正在竞争一个互斥锁.现在,我的问题是,离开临界区的线程立即开始竞争相同的互斥锁,并且大部分时间都获胜.因此,等待互斥锁的其他线程正在挨饿.

我不想让线程,留下一个关键部分,睡眠一段时间,让其他线程有机会锁定互斥锁.

我认为必须有一些参数可以为等待互斥锁的线程启用公平锁定,但我无法找到任何合适的解决方案.

好吧,我找到了std :: this_thread :: yield()函数,它假设重新调度线程执行的顺序,但它只提示调度程序线程,如果重新调度线程,则依赖于调度程序线程实现.

有没有办法如何为在C++ 11中等待相同互斥锁的线程提供公平锁定策略?通常的策略是什么?

谢谢

c++ multithreading locking c++11

7
推荐指数
1
解决办法
3799
查看次数

通过POSIX信号终止C++ 11中的多线程应用程序

C++11在Linux平台上编写了一个简单的多线程应用程序,我希望通过发送SIGINT信号来终止服务器及其运行的线程.

显然我的服务器应用程序使用C++ 11(std::thread等)的线程支持.虽然我在C++ 11(std::signal)中找到了对信号处理的一些支持,但我找不到在多线程环境中处理信号的任何支持.

所以我的问题是 - 有没有办法如何在多线程应用程序中处理信号,C++11或者我是否必须依赖,pthreads因为我的应用程序需要处理信号?

multithreading posix signals c++11

7
推荐指数
1
解决办法
1878
查看次数

标签 统计

c++11 ×2

multithreading ×2

c++ ×1

locking ×1

posix ×1

signals ×1