多线程如何处理多次调用同一个线程对程序的影响
多线程如何避免多次调用同一个线程对程序的影响
线程1
{
创建一个数组;
改变数组值;
//因要将数组传递给线程2,所以数组必须是static型。
启动线程2,并将数组传递给线程2;
}
线程2
{
利用数组值做一些操作;
}
我的问题是:在线程2执行过程中,在线程1中再次调用线程2,
第一次启动的数组值也会随着线程1对数组的更改而改变
怎么避免这种情况呢
------解决方案--------------------
拷贝一个副本给线程2
------解决方案--------------------
不用静态变量,在堆上分配,传返回的指针给线程2
------解决方案--------------------
使用内存对象!返回一个句柄。要访问的时候要加锁解锁!应该也可以解决这个问题!
------解决方案--------------------
堆上new分配一个空间,然后strcpy等拷贝数组,再传递给线程2
------解决方案--------------------
------解决方案--------------------
楼主的思路不是很清晰
请首先理清楚自己的业务逻辑
至于那个数组,可以使用new分配
另外,如果多个线程访问同一个数组 ,请使用线程同步机制 ,可以使用临界区
线程1
{
创建一个数组;
改变数组值;
//因要将数组传递给线程2,所以数组必须是static型。
启动线程2,并将数组传递给线程2;
}
线程2
{
利用数组值做一些操作;
}
我的问题是:在线程2执行过程中,在线程1中再次调用线程2,
第一次启动的数组值也会随着线程1对数组的更改而改变
怎么避免这种情况呢
------解决方案--------------------
拷贝一个副本给线程2
------解决方案--------------------
不用静态变量,在堆上分配,传返回的指针给线程2
------解决方案--------------------
使用内存对象!返回一个句柄。要访问的时候要加锁解锁!应该也可以解决这个问题!
------解决方案--------------------
堆上new分配一个空间,然后strcpy等拷贝数组,再传递给线程2
------解决方案--------------------
------解决方案--------------------
楼主的思路不是很清晰
请首先理清楚自己的业务逻辑
至于那个数组,可以使用new分配
另外,如果多个线程访问同一个数组 ,请使用线程同步机制 ,可以使用临界区