有一个供多个线程调用的"全部函数",请问该函数是线程安全的吗?
czb 2007-12-14 01:31:28 比如有下面的一个"全局函数":
void parseData(MyStruct* pMyStruct)
{
.........
}
下面是两个线程函数,其内部都调用了parseData(MyStruct* MyStruct)方法:
UINT workAThread(LPVOID CompletionPortID)
{
....................................
MyStruct* pMyStruct = new MyStruct();
parseData(pMyStruct);
....................................
}
UINT workBThread(LPVOID CompletionPortID)
{
....................................
MyStruct* pMyStruct = new MyStruct();
parseData(pMyStruct);
....................................
}
那么"全局函数"void parseData(MyStruct* pMyStruct)到底是不是线程安全的呢?
由于是多线程,我们可知workAThread和workAThread都有自己的线程运行空间,那么void parseData(MyStruct* pMyStruct)到底会不会复制两份代码到workAThread和workAThread各自的运行空间中,还是真的作为一个全局函数?如果是一个真的全局函数,我们在编写函数void parseData(MyStruct* pMyStruct)时该注意些什么呢?
期待各位高手的回答,并说明理由