【发布时间】:2012-02-18 03:15:50
【问题描述】:
据我所知,可以使用指向结构的指针。但我想知道,有没有更有效或更优雅的方式来做到这一点?至少在使用结构体的时候,不容易看出函数使用了哪些参数。
感谢任何有见地的回答。
【问题讨论】:
-
你能详细说明一下吗? “将参数传递给另一个线程中的函数”是什么意思?
-
你想做什么?函数定义不在一个或另一个线程上,它可以在任何线程上运行;出现线程问题的一件事是,它是否正在修改一个线程上的数据,而该线程也正在被另一个线程修改。您可以访问另一个线程正在访问的数据结构,但您必须知道正确访问和修改它所需的确切安全措施;最好将功能包装在一个函数中,这样您就不必记住适当的保护措施,或者担心破坏它们。
-
c++(c++11 之前)不了解线程。你用的是什么多线程系统? “将参数传递给函数”是什么意思?
-
您不能在“另一个线程”中调用或返回函数。您所能做的就是向另一个线程发出信号,告知在某个地方有一些数据可以访问,因此通常依赖于结构指针或实例引用——这些东西可以很容易地排队,或者以其他方式与线程通信,而无需扩展锁定,可以携带输入/输出/状态等数据,并可以指示线程对其进行处理,例如。用数据调用一些函数。如果您使用有意义的成员名称,通常会很清楚发生了什么。
-
假设我们只有一个线程A,我们可以调用一个函数foo(int bar1, int bar2);直接在这个线程中。现在想想另一个线程 B,如果你想在那里调用 foo 但你需要从线程 A 传入的 bar1、bar2,你会怎么做?我的问题是如何有效地做到这一点?线程安全是我们稍后可以弄清楚的另一件事。
标签: c++ multithreading parameter-passing