53得票4回答
main()函数能捕获线程抛出的异常吗?

我有一个相当大的应用程序,它动态加载共享对象并在共享对象中执行代码。为了预防风险,在 main 函数中几乎将所有内容都放在 try/catch 块中。我创建了捕获三种异常的 catch 块:myException(内部异常)、std::exception 和 ...(捕获所有异常)。 作为共...

51得票3回答
GNU/Linux上pthread和fork的区别

在Linux中,pthread和fork的基本区别是实现方式和调度方式不同(如果有变化的话)。 我对两个类似的程序运行了strace,一个使用pthread,另一个使用fork,最后都使用了不同的参数进行了clone()系统调用。因此,我猜想在Linux系统上,这两者本质上是相同的,但是pt...

51得票3回答
pthread_mutex_lock是如何实现的

我只是好奇Unix内部如何实现与线程同步相关的函数。例如,调用pthread_mutex_lock时会发生什么?是否有指针在使用?参考源代码将非常有帮助。

50得票2回答
为什么pthread等待条件需要放在while循环中?

我正在学习 pthread 和等待条件。就我所知,一个典型的等待线程像这样:pthread_mutex_lock(&m); while(!condition) pthread_cond_wait(&cond, &m); // Thread stuff here...

50得票3回答
pthread_cond_wait(&cond_t, &mutex); 会在解锁 mutex 后再次锁定它吗?

我在我的程序中使用了pthread_cond_wait(&cond_t, &mutex);,不明白为什么这个函数需要第二个参数是一个互斥量变量。 pthread_cond_wait()函数是否会在开始时(pthread_cond_wait()执行开始)解锁互斥量,然后在结束时...

50得票10回答
使用cmake构建时出现错误:无法找到-lpthread

我有一个C++项目,在给定的机器上平稳运行,现在我正在尝试在另一台相同操作系统的机器上编译它(Xubuntu 14.04)。我已经安装了所有依赖项,并使用cmake构建项目,但是它会停止并出现以下错误: “确定pthread_create函数是否存在于pthreads中失败,并显示以下输出:...

49得票8回答
Pthread互斥锁断言错误

我在一个基于Linux(ARM)的通信应用程序中时不时地遇到以下错误:pthread_mutex_lock.c:82: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' failed. 在谷歌上搜索这个错误会出现很多...

49得票5回答
程序收到信号SIGPIPE,管道断开。

我基于POSIX套接字编写了一个客户端程序。该程序创建了多个线程并将锁定服务器。但是在使用GDB进行调试时,程序会给出一个信息(错误)。 (gdb) n Program received signal SIGPIPE, Broken pipe. [Switching to Thread 0...

48得票5回答
如何从任意pthread_t获取线程ID?

我有一个pthread_t,想要更改它的CPU亲和性。问题在于我使用的是glibc 2.3.2,它没有pthread_setaffinity_np()。不过没关系,因为pthread_setaffinity_np()本身就是sched_setaffinity()的包装器,可以通过传递线程ID而...

47得票6回答
pthread_exit与return的区别

我有一个可加入的pthread运行函数,定义如下:void *sumOfProducts(void *param) { ... pthread_exit(0); } 这个线程应该会加入到主线程中。 每当我通过Valgrind运行我的程序时,我会得到以下泄漏:LEAK SUMMARY: ...