pthreads相关内容
使用 CMake 制作项目时出现错误: -- 找不到线程(丢失:Threads_FOUND) 错误日志显示 CMake 被一些真正平庸的东西绊倒了: /usr/bin/cc -std=c11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Werror -Wno-error=extra -W
..
所以我正在编写一个使用 pthreads 来管理所有 IO 的点对点聊天客户端,当我编译文件时 gcc 给了我错误 client.c:在函数‘accepted_daemon’中:client.c:115:1: 错误:在“void"之前预期“while"空白 *^client.c:在函数‘listen_daemon’中:client.c:176:1: 错误:在“int"之前预期“while"int
..
我创建了一个线程并将其放入一个无限循环中.使用 valgrind 检查代码时出现内存泄漏.这是我的代码: #include #include void thread_do(void){而(1){}}int main(){pthread_t th;pthread_create(&th, NULL, (void *)thread_do, NULL);睡眠(2);/* 我想在这里杀死线程 */睡眠(2
..
每当我创建 pthread 时,valgrind 都会输出内存泄漏, 例如下面的代码: #include #include #include void *timer1_function (void *eit){(无效) eit;printf("你好世界\n");pthread_exit(NULL);}int main(void){pthread_t timer1;pthread_creat
..
我正在使用 pthread 库编写程序.当我使用命令 valgrind --leak-check=full 运行我的程序时,我得到以下错误描述: ==11784====11784== **堆摘要:**==11784== 退出时使用:18 个块中的 4,952 字节==11784== 总堆使用量:1,059 次分配,1,041 次释放,已分配 51,864 字节==11784====11784==
..
http://pastebin.com/YMS4ehRj ^ 这是我对并行归并排序的实现.基本上我所做的是,对于每个拆分,前半部分由一个线程处理,而后半部分是顺序的(即)说我们有一个包含 9 个元素的数组,[0..4] 由线程 1,[0..1] 由线程 2 处理,[5..6] 由线程 3 处理(请查看源代码以进行澄清). 其他一切都保持不变,比如合并.但问题是,这比归并排序慢得多,甚至
..
考虑到当今多核和多处理硬件的巨大重要性,试图了解人们目前实际上是如何编写并行代码的.对我来说,占主导地位的范式似乎是 pthreads(POSIX 线程),它在 Linux 上是原生的,在 Windows 上可用.HPC 人员倾向于使用 OpenMP 或 MPI,但在 StackOverflow 上这些似乎并不多.或者您是否依赖 Java 线程、Windows 线程 API 等而不是可移植标准?在
..
我有 4 个线程,我试图设置线程 1 在 CPU 1 上运行,线程 2 在 CPU 2 上运行,等等.但是,当我运行下面的代码时,关联掩码返回正确的值,但是当我对线程执行 sched_getcpu() 时,它们都返回它们在 CPU 4 上运行. 有人知道我的问题是什么吗? 提前致谢! #define _GNU_SOURCE#include #include #include #inc
..
我在一个线程中有一个 std::future,它正在等待另一个线程中设置的 std::promise. 编辑: 用一个示例应用程序更新了问题,该应用程序将永远阻止: 更新:如果我使用 pthread_barrier 代替,下面的代码不会阻塞. 我创建了一个测试应用程序来说明这一点: 非常基本的 foo 类创建了一个 thread,它在它的 run 函数中设置了一个 prom
..
在我的析构函数中,我想干净地销毁一个线程. 我的目标是等待一个线程完成执行,然后销毁该线程. 我发现关于查询 pthread 状态的唯一方法是 pthread_attr_setdetachstate 但这只会告诉您您的主题是否是: PTHREAD_CREATE_DETACHED PTHREAD_CREATE_JOINABLE 这两者都与线程是否仍在运行无关. 如何查
..
cmake 部分输出如下所示: -- 执行测试 CMAKE_HAVE_LIBC_PTHREAD-- 执行测试 CMAKE_HAVE_LIBC_PTHREAD - 失败 解决方案 线条 -- 寻找 pthread.h-- 寻找 pthread.h - 找到-- 执行测试 CMAKE_HAVE_LIBC_PTHREAD-- 执行测试 CMAKE_HAVE_LIBC_PTHREAD - 失败--
..
如果我直接在命令行上用 g++ 编译,我可以看到我需要的一切都在那里: $ g++ -pthread test.cpp$ ldd a.outlinux-vdso.so.1 =>(0x00007ffffd05b3000)libstdc++.so.6 =>/usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4a1ba8d000)libpthread.s
..
我正在运行 RHEL 5.1 并使用 gcc. 我如何告诉 cmake 将 -pthread 添加到编译和链接中? 解决方案 @Manuel 参与其中.您也可以添加编译器选项,如下所示: 如果你有 CMake 3.1.0+,这个变得更容易: set(THREADS_PREFER_PTHREAD_FLAG ON)find_package(需要线程数)target_link_li
..
在过去没有线程经验的情况下,C++ 中的哪种线程技术对初学者来说是最容易的?boost::thread 还是 pthreads? 解决方案 转到 boost::thread.它与密切相关即将推出的 C++ 标准线程,并且界面非常易于使用和习惯于 C++(RAII 而不是手动资源管理).
..
Boost 库似乎没有用于设置线程优先级的设备.这是在 Linux 上使用的最佳代码还是有更好的方法? boost::thread myThread( MyFunction() );struct sched_param 参数;param.sched_priority = 90;pthread_attr_setschedparam(myThread.native_handle(), SCHED
..
好的,我正在尝试通过 struct 将一对数字传递给 pthread 中的 pthread_create 函数.但是我传递的数字和调用函数时得到的数字是不同且随机的 这是struct 结构对{长 i,j;}; 在主里面 void main(){long thread_cmp_count = (long)n*(n-1)/2;long t,index = 0;结构对 *pair;pair
..
#include #include #include #define 尺寸 1024#define 数量 100000#define 线程 4A级{私人的:字符 [大小];};无效测试(){std::cout
..
当我从 main 调用 pthread_exit 时,程序永远不会终止.我希望程序完成,因为我正在退出程序的唯一线程,但它不起作用.好像挂了. #include #include #include int main(int argc, char *argv[]){printf("-one-\n");pthread_exit(NULL);printf("-二-\n");} Process Exp
..
我只是想知道在 Unix 中如何实现与线程之间的同步相关的功能.例如,当我调用 pthread_mutex_lock 时会发生什么?是否有任何使用中的指针?参考源代码真的很有帮助. 解决方案 它既复杂又因 Unix 变体而异. 例如,在 Linux 中,使用了一个名为 Futex(Short for Fast Userspace Mutex)的系统. 在该系统中,对用户空间中的
..
我有一个 pthread_t,我想改变它的 CPU 亲和性.问题是我使用的是 glibc 2.3.2,它没有 pthread_setaffinity_np().不过没关系,因为 pthread_setaffinity_np() 本身就是 sched_setaffinity() 的包装器,它可以通过传递线程 ID 而不是进程 ID 来调用以设置任意线程的亲和性. 但是 ... sched_se
..