相关疑难解决方法(0)

暂停和恢复pthreads的最佳解决方案是什么?

我找到了关于pthreads 的以下主题(这里),但有很多很好的解决方案.

我想知道以下代码是否有效,如果是,为什么使用相同的锁来调用pthread_cond_wait以及访问它然后立即解锁:

void suspendMe()
{
    pthread_mutex_lock(&m_SuspendMutex);
    pthread_cond_wait(&m_ResumeCond, &m_SuspendMutex);
    pthread_mutex_unlock(&m_SuspendMutex);
}
Run Code Online (Sandbox Code Playgroud)

在这里使用2个单独的互斥锁不是更好吗,或者这是暂停pthread的正确方法?

提前致谢!

编辑:

很棒的回复,谢谢大家.还有一个相关的问题.既然我想在另一个函数中单独恢复一个线程,那么恢复它会更合适吗?

void suspendMe()
{
    pthread_mutex_lock(&m_SuspendMutex);
    pthread_cond_wait(&m_ResumeCond, &m_SuspendMutex);
}
void resumeMe()
{
    pthread_cond_signal(&m_ResumeCond);
    pthread_mutex_unlock(&m_SuspendMutex);
}
Run Code Online (Sandbox Code Playgroud)

再次感谢大家!:〜)

c++ posix pthreads

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

如何随时暂停 pthread?

最近我开始将 ucos-ii 移植到 Ubuntu PC。

我们知道,在 pthread 的回调函数中,通过简单地在“while”循环中添加一个标志来执行暂停和恢复(如下面的解决方案)是不可能模拟 ucos-ii 中的“进程”的。因为ucos-ii中的“进程”可以随时暂停或恢复!

如何在 Linux 上的 c 中休眠或暂停 PThread

我在下面的网站上找到了一种解决方案,但无法构建,因为它已过时。它使用Linux中的进程来模拟ucos-ii中的任务(就像我们Linux中的进程)。

http://www2.hs-esslingen.de/~zimmerma/software/index_uk.html

如果pthread可以像进程那样随时暂停和恢复,请告诉我一些相关的功能,我自己能弄明白。如果不能,我想我应该专注于较旧的解决方案。非常感谢。

c++ linux embedded pthreads

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

使用pthreads以挂起模式创建线程

在Win32中,您可以通过在CREATE_SUSPENDED中使用dwCreationFlags参数来创建挂起模式的线程.我正在寻找与pthreads类似的功能.请注意,我不希望在运行它之后暂停该线程,然后使用条件变量暂停它,但实际上是在挂起模式下创建它,然后稍后启动它.

使用这种方法的优点是我可以在运行之前为该线程分配一些属性.例如,在启动之前将其绑定到某个核心,这比首次启动更有效,然后将其分配给核心,因为它可能会从一个核心移动到另一个核心.

如果不可能,我们至少可以在调用pthread_create时将线程绑定到核心吗?

c linux winapi pthreads

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

标签 统计

pthreads ×3

c++ ×2

linux ×2

c ×1

embedded ×1

posix ×1

winapi ×1