问题标签 [pthread-exit]

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.

0 投票
1 回答
55 浏览

c - pthread_exit() 和 pthread_join() 不起作用

我不知道为什么它不返回我输入的值。我知道不是void* arg因为它打印了正确的数字,但我不知道。

代码:

结果:

0 投票
1 回答
84 浏览

multithreading - pthread_exit 函数的属性:哪一个是正确的?

在 CSAPP 书第 12.3 节中,他们说..

线程通过调用pthread_exit函数显式终止。如果主线程调用pthread_exit,它会等待所有其他对等线程终止,然后终止主线程和整个进程,返回值为 thread_return。

但是在pthread_exit的手册页中:https ://man7.org/linux/man-pages/man3/pthread_exit.3.html

从除主线程之外的任何线程的启动函数执行返回会导致对 pthread_exit() 的隐式调用,使用函数的返回值作为线程的退出状态。

为了允许其他线程继续执行,主线程应该通过调用 pthread_exit() 而不是 exit(3) 来终止。

关于pthread_exit的两个描述是不同的。第一个说主线程将等待对等点,但不是第二个。

因此我编写了一个代码来确保正确的属性。

(我借用了一些代码行当主线程退出时,其他线程是否也退出?

(感谢https://stackoverflow.com/users/959183/laifjei

在此处输入图像描述

由于pthread_cancel在pthread_exit之前调用,主线程成功取消 t1 线程,结果如下,

在此处输入图像描述

但是,当我将代码修改为 '42 line -> add //' 和 '44 line -> delete //' 时,主线程无法取消 t1,因为它已经终止。因此,以下结果看起来像,,

抱歉有些错误,比如 wq

最后,我得出结论,手册页的属性是正确的。我对吗?

为什么CSAPP书说“它等待所有其他对等线程终止”?

0 投票
0 回答
60 浏览

c - 如何处理 pthread_kill 正常退出程序

当我睡眠 1 秒时,我得到了通常的退出,但是当我注释掉sleep(1)并编译并运行程序时,我得到了killed为什么?我知道给睡眠不是正确的方法,我想知道如何处理我们必须调用 pthread kill 并确保线程正常退出的情况 |in a nutshell i want that atleast thread is created and running when pthread_kill is called

0 投票
0 回答
10 浏览

c - 如果线程在调用join之前退出,你能得到它的返回值吗?

如果你有一个线程 Apthread_exit(return_val)在线程 B 可以调用之前调用 pthread_join(A, ret_val_A),结果是什么?join 是否像线程不存在一样返回?