问题标签 [pthread-join]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 pthread_cancel 时 pthread_join 的可能返回值是多少
下面的代码显示了我尝试在start_routine
没有完成的时间内取消线程ts
,并加入线程以确保线程终止。我在一个简单的函数 forstart_routine
和res2
return上使用了它PTHREAD_CANCELED
。但是,我尝试使用这种方法来调用第三方库start_routine
,但这并没有返回PTHREAD_CANCELED
(即我得到“pthread is terminate due to xxx?”)。
根据手册页pthread_join
:
如果目标线程被取消,则 PTHREAD_CANCELED 被放置在 *retval 中。
pthread_join
使用时可能的返回值是pthread_cancel
多少?为什么pthread_join
有时不返回PTHREAD_CANCELED
?
请注意,我使用了默认取消类型(即PTHREAD_CANCEL_DEFERRED
)并启用取消(即PTHREAD_CANCEL_ENABLE
)。
c++ - PThread - 尽管调用了 pthread_join,但线程提前退出
我以相当基本的方式实现了 PThreads:
并且它的输出没有显示 X 的预期数量。我在调用 join 函数时是否做错了什么?感谢帮助。
PS:我尝试了从 5 到 20 的各种 X 值,但它总是给我小于所需的 X 数。
c++ - 如果线程在调用 pthread_join 之前退出怎么办
我有一个小代码
我在创建后的某个时间加入线程。如果 main 试图加入一个已经退出的线程会发生什么?
c++ - 为什么 pthread_exit 的行为类似于 pthread_join?
代码:
为什么pthread_exit(NULL)
这里的行为像pthread_join()
?即为什么退出main
不破坏printHello
线程并允许它继续?
c++ - 加入 pthread 时出现分段错误
我正在尝试实现一个线程接口类
我遇到了 join() 函数的问题,它给了我一个分段错误
输出:
有趣的是,当我调用 gdb 并在 MyThread::run 设置中断时,会打印素数并且我收到一条消息:
请参考代码并帮助我,我是线程新手。顺便说一句,我已经删除了一些代码,只保留了必要的代码
更新:
使用pthread_create(&id, NULL, function, NULL);
, 不会出现段错误,并且一切正常。
multithreading - 为什么这个关于共享变量的简单程序不能扩展?(无锁)
我是并发编程的新手。我实施了一项 CPU 密集型工作,并测量了我可以获得多少加速。但是,当我增加#threads 时,我无法获得任何加速。
该程序执行以下任务:
- 有一个共享计数器可以从 1 计数到 1000001。
- 每个线程执行以下操作,直到计数器达到 1000001:
- 以原子方式递增计数器,然后
- 循环运行 10000 次。
总共要执行 1000001*10000 = 10^10 次操作,所以我应该能够在增加#threads 时获得良好的加速。
这是我实现它的方式:
但是,当我运行我的程序时,我无法获得比顺序执行更好的性能!!
我在 4 核机器上运行程序。
有没有人有改进程序的建议?或者任何线索为什么我不能得到加速?
c - 确保每个线程的执行
我想运行 4 个不同的线程调用相同的方法,并且我想确保每次运行都来自不同的运行线程。
使用下面提供的代码,方法函数运行了预期的次数,但它总是由同一个线程完成(打印的值不会改变)。
我应该在代码中更改什么以确保这种情况?(这将导致此示例打印 4 个不同的值)
编辑:相同的代码,但包括一个结构来查看解决方案将如何
linux - 线程:pthread_cond_signal() 在等待条件下没有将控制权交给另一个线程
在这里,我尝试使用 read_input 读取输入,然后使用 write_input 打印该值...
但它在 read_input 循环中继续,而不是控制 write_input... 这应该将互斥控制返回到 write_input 线程以打印值。请帮忙...
pthreads - pthred_exit 返回变量静态与全局范围
当用于使用 pthread_join 获取返回值的变量被定义为全局与静态范围时,我看到了不同的行为。我在这里包含了 code_snippet。
静态变量
返回值
全局变量
返回值
有人可以解释为什么它的行为不同吗?
linux - pthread_exit 的退出值错误
下面的代码只是创建了两个线程并尝试获取它们的返回值。
我已经在 32 位 glibc-2.15 系统上编译并运行它,一切正常(输出:r1: 1, r2: 2)。但是,当我在 64 位 glibc-2.17 系统上执行相同操作时,输出错误(输出:r1: 0, r2: 2)。为什么相同的代码在不同的系统上表现不同?
注意:如果 r1 和 r2 的类型更改为void*
或int*
如下所述,则代码在两个系统上都有效。