Pthreads(POSIX Threads)是一个标准化的基于C的API,用于创建和操作线程。它目前由POSIX.1-2008(IEEE Std 1003.1,2013 Edition / The Open Group Base Specifications Issue 7)定义。
是否可以使用 thread_info() 或 pthread_mach_thread_np() 来了解 OSX 上的线程是否已终止?
我正在尝试在 OSX 上实现类似于 pthread_tryjoin_np 的东西。 为此,我需要一种可靠的方法来查找 pthreat_t 是否已终止。 我找到了 mach_port API,我很想知道......
Linux 中线程创建会触发页面错误吗?它与 soft-dirty PTE 有什么关系?
之所以问这个问题,是因为我在测试linux soft-dirty bit的行为时发现,如果我创建一个线程而不触及任何内存,所有页面的soft-dirty bit都会......
在线程中调用 pthread_cond_wait 是否解锁互斥量
手册页说这个 pthread_cond_wait 以原子方式解锁互斥量(根据 pthread_unlock_mutex)并等待条件变量 cond 发出信号。 但是线程 start_function 可能是...
我做了一个 while 循环,如果条件为真,它调用一个线程来执行一个操作,一旦该操作完成,它应该意味着该条件在一段时间内不再为真。然而自从...
线程本地存储(C11 的 _Thread_local 或 gcc 的 __thread)在(非分离的)线程返回后但在加入之前(例如,通过其他线程的指针访问)是否仍然可用?
进程从未命名管道读取或更新共享内存中的变量时出现问题 C, linux
首先,感谢您的阅读和帮助! 这是一个多进程多线程的C语言代码。它涉及创建多个工作进程和一个与...进行通信的调度程序线程
我有以下程序(缩写)来计算每个字母在使用线程的文件中出现的次数: #define N_LETTERS 26U #define IS_LETTER(x) (x >= 'A' && x <= 'Z') #
在与我的教授讨论并发性时,他提到围绕锁的潜在编译器优化(重新排序指令、优化访问等),例如 pthread_mutex_lock() 可以...
我对如何使用 pthread 声明递归互斥锁有点困惑。 我尝试做的是一次只有一个线程能够运行一段代码(包括函数)但是在怀疑之后我
想问一下pthread_mutex_t的正确用法。 我知道您可以使用 pthread_mutex_init 函数进行初始化,也可以将其设置为 PTHREAD_MUTEX_INITIALIZER 并且
在这里,在 pthread.h 和 stdint.h 的上下文中: void *run(void *arg) { uint32_t 线程 = (uintptr_t) arg; ... 返回 NULL } 这是我教授的代码,我阅读了规范...
首先,感谢您的阅读和帮助! 在下面的代码中,它意味着创建 5 个工作进程并监听(读取)来自作为
我正在开发一个库后端应用程序,它需要处理来自 pthreads 和非 pthreads 的调用,特别是我想在库中设置线程特定状态。注意,我没有
首先,感谢您的阅读和帮助! 我正在制作一个涉及进程、线程、命名和未命名管道以及消息队列的程序,目标是模拟一个管理
如何修复 Musl x86_64 LibC 上对 PThread 的未定义引用?
一段时间以来,我一直在尝试针对 Musl 进行编译。我的目标是制作一个游戏引擎二进制文件,它可以使用相同的二进制文件在尽可能多的 x86_64 Linux 发行版上执行。 问题是,
我是多线程的新手,一般来说不是 C 语言中最好的,所以对我来说很简单。 我有一个 for 循环,它创建了许多线程,我将参数传递给这些线程: 对于(int i = 0; i <
使用 pthread_getname_np() 检查线程当前是否正在运行是否安全?
我之前在一家公司的代码库(使用 C 为基于 linux 的系统开发嵌入式软件)中看到使用 pthread_getname_np() 检查线程当前是否正在运行。我有...
在带有 mingw 编译器的 Windows 中使用 pthreads
我在尝试编译包含 pthreads 的代码时遇到了错误。 我尝试从以下位置下载 pthreads 库: ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip 和
我正在使用循环创建线程,其中用户通过参数指定线程数。一般代码如下: void* thread_fn(void* arg) { int num = *(int*)arg; p...
我有 pthread_mutex_t lock1 pthread_mutex_t id 定义为 (void*) 所以我认为 pthread_mutex_init(&lock1, NULL);做一个malloc 和 int k = pthread_mutex_lock(&lock1);以某种方式改变...