在Ubuntu上使用C 中的pthreads时.主线程范围从哪里开始和结束
When using pthreads in C++ on Ubuntu. Where does the main thread scope start and end?
所以我不立即在这里发布代码,因为我是学生,并且知道我的代码目前很丑陋,在这种情况下很大。
问题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)
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在cuda线程之间共享大量常量数据
- 有没有办法在另一个函数中加入线程?(即超出其自身范围)
- std::线程不是全局变量,但在到达创建它的函数的末尾时不会超出范围?
- 分离线程然后让它超出范围(并使其仍在运行)是否安全?
- 我们如何准备小内存池,其中每个线程可以独立访问某些位置范围?
- 对象析构函数在多线程处理时不断被调用,但该对象并未超出范围
- C 线程堆栈地址范围
- 是否可以在全球范围内声明一个提升线程
- 防止变量脱离范围,因此它们仍然存在另一个线程
- 在不超出范围的情况下将指针传递到线程
- 通过引用将循环计数器或范围声明传递给线程有什么区别
- 使用 join() 从不同范围运行C++线程
- 带有GCC的C++11中的线程范围对象
- Boost线程-超出范围的可能性
- 使用3个线程按顺序打印数字,这些线程打印不同的范围
- 使用async结束线程并超出其未来的范围是否安全?