gpt4 book ai didi

c++ - pthread_create : Passing argument by value

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:53 25 4
gpt4 key购买 nike

我想知道为什么我们不能按值将对象传递给我们创建线程的函数。

这背后有逻辑上的原因吗?如果语言允许按值传递是否有害?

最佳答案

pthread 是一个 C 风格的接口(interface)。为了比“传递整数”更灵活,它必须是一个指针。 void * 是在 C 中传递任意内容的最灵活方式。在 C 中,您当然可以按值传递 struct,但需要知道哪个结构编译时的源函数和目标函数(每次都相同,所以我们不能在一个线程中使用 struct X,而在另一个线程中使用 struct Y线)。

在 C++ 中,我们当然可以使用类和模板来允许将几乎所有内容传递给几乎任何类型的函数。

C++ 11 std::thread 允许您使用各种 C++ 风格的东西来克服 pthreads 的“C-ness”(并且受制于目标系统的可用实现,使用没有线程的线程线程)。

[这不是pthreads独有的。 OS/2 和 Windows 线程实现都采用 void * 作为线程函数的参数]

关于c++ - pthread_create : Passing argument by value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com