在Ubuntu上使用C 中的pthreads时.主线程范围从哪里开始和结束

When using pthreads in C++ on Ubuntu. Where does the main thread scope start and end?

本文关键字:范围 线程 结束 开始 Ubuntu pthreads 中的      更新时间:2023-10-16

所以我不立即在这里发布代码,因为我是学生,并且知道我的代码目前很丑陋,在这种情况下很大。

问题1:这就是说,我试图难以射击我的情况,而不是让别人解决我的问题的解决方案。也就是说,对于初学者来说,当PTHREAD_CREATE函数在类的成员函数中调用时,我只是在寻找一个简单的回答主线程范围的问题。该成员函数是否充当主线程,主线程是否传播到该成员函数中调用的其他成员功能?还是主线程甚至从该函数中传递出来,说该功能是否从另一个函数中调用,主线程是否存在于该外部功能中,提醒您pthread_create函数在循环中的函数中调用外部功能?

问题2:由于我需要使用包装器来与Callee功能一起使用类成员,因此我在包装器功能中或包装功能中使用PTHREAD_EXIT吗?对事物结构的任何洞察力在这样做时可能与没有课堂的事情有所不同的任何洞察力都将不胜感激。

问题3:设置,我正在尝试将线程ID存储为一系列未符号的长INT,但是每当我尝试在PTHREAD_JOIN函数中使用其中一个时,它就会破裂。它需要是pthread_t'的数组吗?pthread_t和未签名长的长时间有什么区别?

只是一个提醒,我是学生而不是专业人士,请尝试在答案中考虑到这一点,谢谢。

1- pthread Creation是一个完全异步的操作。您的主线程呼叫创建,该呼叫根据给出的参数启动新线程,然后立即返回以执行下一行代码。该主线程继续进行,不考虑新创建的线程。同时,新线程并联执行。您似乎对范围有些困惑。简而言之,无论它在内部创建什么范围(例如,在循环中),新线程将继续存在,直到其退出为止。同样,主线程范围没有任何区别。它只是启动了新线程,然后继续,好像什么都没发生。通常,它们完全没有意识到彼此的存在,它们只是共享您的过程记忆空间。

3-类型是pthread_t,因此请这样存储。始终避免将一种类型存储为其他类型,除非您有充分的理由这样做。这可能会回答您有关差异的问题(http://www.ibm.com/support/knowledgecenter/ssw_i5_54/apis/concep17.htm)