pthreads相关内容

"void *(*)(void *)"是什么意思在 C++ 中是什么意思?

它是pthread_create()中的参数.我认为每个部分的意思是: void *:返回值是一个void指针. (*):它是一个函数指针. (void *):它接受一个无类型指针作为参数. 正确吗? 解决方案 是,它是一个无名函数指针的签名,它接受并返回void *. 如果它有一个名字(如在一个变量中)它会是: void *(*myFuncName)(vo ..
发布时间:2021-12-13 13:26:18 C/C++开发

PTHREAD_MUTEX_INITIALIZER 与 pthread_mutex_init ( &mutex, param)

和 有什么区别吗 pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; 或 pthread_mutex_t 锁;pthread_mutex_init ( &lock, NULL); 如果我只使用第一种方法,我就足够安全了吗? 注意:我的问题主要是针对非常小的程序,其中我最多要做的是将多个客户端连接到服务器并使用工作线程解决它们的查询. ..
发布时间:2021-12-12 12:52:45 其他开发

为什么ubuntu 12.04下的OpenMP比串口版慢

我已经阅读了有关此主题的其他一些问题.然而,他们无论如何都没有解决我的问题. 我写的代码如下,我得到的 pthread 版本和 omp 版本都比串行版本慢.我很困惑. 环境下编译: Ubuntu 12.04 64bit 3.2.0-60-genericg++ (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1CPU:2在线 CPU(s) 列表:0,1每核线程:1供 ..
发布时间:2021-12-12 12:31:54 C/C++开发

对“pthread_create"的未定义引用 — 链接器命令选项顺序(目标文件之前/之后的库?)

当我尝试编译它时,我收到一个特定的错误.但是,这是不可能的,因为我使用了正确的标志.在server.c 中有库pthread.h.那么,如何解决我的链接问题?我正在使用 Linux (Ubuntu). 制作gcc -c -Wall -Wunused -ansi -pedantic -ggdb -o Server1.o Server.cgcc -c -Wall -Wunused -ansi -pe ..
发布时间:2021-12-12 11:58:59 其他开发

POSIX 取消点是什么?

POSIX 取消点是什么?我正在寻找 POSIX 取消点的明确列表. 我之所以这么问是因为我有一本书说 accept() 和 select() 是取消点,但我看到互联网上的网站声称他们不是. 此外,如果 Linux 取消点与 POSIX 取消点不同,我也需要它们的列表. 解决方案 POSIX 1003.1-2003 标准在系统接口部分给出了一个列表,然后是一般信息,然后是线程( ..

程序收到信号 SIGPIPE, Broken pipe

我编写了一个基于 posix 套接字的客户端程序.该程序创建多个线程并将锁定服务器.但是在 gdb 调试期间,程序给出了一个信息(错误) (gdb) n程序收到信号 SIGPIPE,断管.[切换到线程 0xb74c0b40 (LWP 4864)] __kernel_vsyscall() 中的 0xb7fdd424(gdb) 代码如下: #include #include #include # ..
发布时间:2021-12-11 11:29:53 其他开发

accept() 线程安全吗?

我目前正在为我正在做的一门课程用 C 语言编写一个简单的网络服务器.一个要求是我们实现一个线程池来处理使用 pthreads 的连接. 我知道我将如何粗略地执行此操作(在主线程中调用 accept 并将文件描述符传递给 freee 线程),但是我的朋友建议了一种替代方法,而不是我想到的方法:创建我的所有线程预先,并让他们在接受呼叫时永远循环.这个想法是,accept 将阻塞所有空闲线程,并且 ..
发布时间:2021-12-11 11:16:26 其他开发

唤醒被 accept() 调用阻塞的线程

Linux 上的套接字问题 我有一个在 accept() 调用中被阻塞的工作线程.它只是等待传入的网络连接,处理它,然后返回侦听下一个连接. 当程序需要退出时,我如何通知这个网络工作线程(来自主线程)从 accept() 调用返回,同时仍然能够优雅地退出其循环并处理其清理代码. 我尝试过的一些事情: pthread_kill 发送信号.这样做感觉很笨拙,而且它不能可靠地允许 ..
发布时间:2021-12-11 11:04:11 其他开发

OpenSSL 和多线程

我一直阅读关于如果在多线程应用程序,您必须使用 OpenSSL 注册线程识别函数(以及互斥创建函数). 在Linux上,根据OpenSSL提供的例子,一个线程通常是通过注册一个这样的函数来识别的: static unsigned long id_function(void){return (unsigned long)pthread_self();} pthread_self() 返回一 ..
发布时间:2021-12-09 16:55:29 其他开发

OS X 上的 sem_init

我正在编写一些使用 pthread 和信号量库的代码.sem_init 函数在我的 Ubuntu 机器上运行良好,但在 OS X 上 sem_init 函数完全无效.图书馆有什么问题还是有不同的做法?这是我用来测试的代码. sem_t sem1;sem_t sem2;sem_t sem3;sem_t sem4;sem_t sem5;sem_t sem6;sem_init(&sem1, 1, 1) ..
发布时间:2021-12-06 20:43:11 其他开发

当主线程退出时,其他线程是否也退出?

我对同一进程中的主线程和其他线程有疑问.当 main 函数返回时,其他线程是否也退出?我对此感到困惑. 考虑以下测试代码: void* test1(void *arg){无符号整数 i = 0;而 (1){我+=1;}返回空;}void* test2(void *arg){长双 i = 1.0;而 (1){我*= 1.1;}返回空;}void startThread ( void * (* ..
发布时间:2021-12-06 11:44:37 其他开发

mingw-w64 线程:posix 与 win32

我正在 Windows 上安装 mingw-w64,有两个选项:win32 线程和 posix 线程.我知道 win32 线程和 pthreads 之间有什么区别,但我不明白这两个选项之间有什么区别.我怀疑如果我选择 posix 线程,它会阻止我调用 CreateThread 之类的 WinAPI 函数. 这个选项似乎指定了某个程序或库将使用哪个线程 API,但是什么?通过 GCC、libs ..
发布时间:2021-12-05 19:18:04 其他开发

POSIX API 调用以列出进程中运行的所有 pthread

我在 POSIX/Linux 环境中有一个多线程应用程序 - 我无法控制创建 pthread 的代码.在某些时候,进程(pthread 的所有者)会收到一个信号. 该信号的处理程序应中止、取消或停止所有 pthread 并记录正在运行的 pthread 数量. 我的问题是我找不到如何列出进程中运行的所有 pthread. 解决方案 似乎没有任何可移植的方法来枚举进程中的线程. ..
发布时间:2021-12-03 13:49:33 服务器开发

如何提高pthreads中的线程优先级?

我在 Linux 中使用 pthread.我想通过设置参数sched_pa​​ram.priority 来增加线程优先级.但是,我在网上找不到很多关于我可以设置的线程优先级范围的信息,或者关于线程优先级的描述. 另外,我想知道相对线程优先级,因为我不想将线程优先级设置得太高而导致操作系统停止.有人可以帮我解决这个问题吗? 解决方案 默认的 Linux 调度策略是 SCHED_OTHE ..
发布时间:2021-12-03 13:41:03 服务器开发

编译时-pthread标志的意义

在各种多线程 C 和 C++ 项目中,我看到 -pthread 标志应用于编译和链接阶段,而其他人根本不使用它,只是通过 -lpthread 到链接阶段. 不使用 -pthread 标志编译和链接是否有任何危险 - 即 -pthread 实际做什么?我主要对 Linux 平台感兴趣. 解决方案 尝试: gcc -dumpspecs |grep线程 并查找以 %{pthread: ..
发布时间:2021-12-01 15:40:54 服务器开发

使用 -pthread 自动配置

您好.我正在尝试创建一个 autoconf 配置脚本,该脚本会自动检查要使用的 pthread 选项,并且理想情况下,在使用 gcc 编译时指定 -pthread. 我希望 AX_PTHREAD 可以工作,但似乎都不适用于 MacOS 10.6. 我正在使用来自 http://www.nongnu.org/autoconf-的 AX_PTHREAD-存档/ax_pthread.html ..
发布时间:2021-11-30 19:06:02 其他开发

哪个更有效,基本互斥锁或原子整数?

对于像计数器这样简单的东西,如果多个线程将增加数量.我读到互斥锁会降低效率,因为线程必须等待.所以,对我来说,原子计数器是最有效的,但我在内部读到它基本上是一个锁?所以我想我很困惑如何才能比另一个更有效率. 解决方案 原子操作利用处理器支持(比较和交换指令)并且根本不使用锁,而锁更依赖于操作系统并且执行不同,例如例如,Win 和 Linux. 锁实际上会暂停线程执行,为其他任务释放 ..
发布时间:2021-11-30 14:50:26 其他开发