linux:在main函数中创建了两个线程,那么谁是主线程,是main函数吗,还是其他的?

linux:在main函数中创建了两个线程,那么谁是主线程,是main函数吗,还是其他的?,第1张

在主函数之前创建线程?你是说在主函数返回之前创建线程,还是说主函数执行之前创建线程?

线程是程序最基本的运行单位,而进程不能运行,所以能运行的,是进程中的线程。进程仅仅是一个容器,包含了线程运行中所需要的数据结构等信息。一个进程创建时, *** 作系统会创建一个线程,这就是主线程,而其他的从线程,却要主线程的代码来创建,也就是由程序员来创建。

一般地,线程的调度(也就是什么时候运行,什么时候暂停运行)由 *** 作系统来负责,但你也可以显式地挂起其他的线程,或继续其他线程的运行。

对于线程,你可以把它看作是一个运行的轨迹,而多个线程,你可以看作是你的程序的不同的代码在并行地运行,而不是串行的运行(当然,实际上对于单CPU来说,多线程也是串行运行的,不过从宏观上来看,多线程是并行执行的),也就是说,你的几个线程在同时执行任务。这样一来,你就可以让不同的线程来执行不同的任务,它们之间互相不干扰,比如你可以创建一个线程用来响应界面的消息,另一个线程来做实际的工作,这样就不会由于需要计算的东东太多而导致界面失去响应,看上去跟死了一样了。

pthread_join 线程停止等待函数没有调用

pthread_create 线程生成后,没有等子线程停止,主线程就先停止了。

主线程停止后,整个程序停止,子线程在没有printf的时候就被结束了。

结论:不是你没有看到结果,而是在子线程printf("\n");之前整个程序就已经停止了。

#include <stdioh>

#include <stdlibh>

#include <sys/typesh>

#include <stringh>

#include <unistdh>

#include <pthreadh>

#define FALSE -1

#define TRUE 0

void shuchu( void dumy )

{

int j;

printf("\n");

}

int main()

{

int i = 0;

int rc = 0;

int ret1;

pthread_t p_thread1;

if(0!=(ret1 = pthread_create(&p_thread1, NULL, shuchu, NULL)))printf("sfdfsdfi\n");

printf("[%d]\n",p_thread1);

pthread_join(p_thread1, NULL);

return TRUE;

}

你好。 在分时系统里应该没什必要吧 setpriority/getpriority,这两个函数描述的是改变进程优先级。 但是在linux中线程就是一个轻量级的进程, 所以这两个函数是可以作用于单独的线程的 如果我的回答没能帮助您,请继续追问。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/13493729.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存