问题标签 [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.
c - pthread_exit() 和 pthread_join() 不起作用
我不知道为什么它不返回我输入的值。我知道不是void* arg
因为它打印了正确的数字,但我不知道。
代码:
结果:
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,因为它已经终止。因此,以下结果看起来像,,
最后,我得出结论,手册页的属性是正确的。我对吗?
为什么CSAPP书说“它等待所有其他对等线程终止”?
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
c - 如果线程在调用join之前退出,你能得到它的返回值吗?
如果你有一个线程 Apthread_exit(return_val)
在线程 B 可以调用之前调用
pthread_join(A, ret_val_A)
,结果是什么?join 是否像线程不存在一样返回?