Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 对象地址突然改变 类测试 { void thread1() { int i=0; while(true){ for(无符号整数k=0;k_Multithreading_C++11_Segmentation Fault - Fatal编程技术网

Multithreading 对象地址突然改变 类测试 { void thread1() { int i=0; while(true){ for(无符号整数k=0;k

Multithreading 对象地址突然改变 类测试 { void thread1() { int i=0; while(true){ for(无符号整数k=0;k,multithreading,c++11,segmentation-fault,Multithreading,C++11,Segmentation Fault,最有可能的情况是,您引用的对象在调用C时被销毁,这表明存在同步问题。您需要延长线程引用的对象的生存期,直到线程完成其例程的执行。要实现这一点,您可以使用以下方法: #包括 #包括 #包括 结构foo{ void callback1(){ 用于(自动和电气:存储){ 元素+=5; } } void callback2(){ 用于(常量自动和元素:存储){ std::你不能没有锁定。请添加你用于线程的代码。请检查此项。请发布一个。请阅读此项:@n.m.无需苛刻,我在手机中,直到现在才意识到。@n.m

最有可能的情况是,您引用的对象在调用C时被销毁,这表明存在同步问题。您需要延长线程引用的对象的生存期,直到线程完成其例程的执行。要实现这一点,您可以使用以下方法:

#包括
#包括
#包括
结构foo{
void callback1(){
用于(自动和电气:存储){
元素+=5;
}
}
void callback2(){
用于(常量自动和元素:存储){

std::你不能没有锁定。请添加你用于线程的代码。请检查此项。请发布一个。请阅读此项:@n.m.无需苛刻,我在手机中,直到现在才意识到。@n.m.这是一个答案吗亲爱的先生?希望你现在高兴:)这当然是一个答案:)
class test
{
    void thread1()
    {
        int i = 0;
        while(true){
            for(unsigned int k = 0;k < mLD.size(); k++ )
            {
                mLD[k] = i++;
            }
        }
    }
    void thread2()
    {
        std::cout << "thread2 address  : " << &mLD << "\n";
        C();
    }
    void B()
    {
        std::cout << "B address  : " << &mLD << "\n";
        for(unsigned int k = 0;k < mLD.size(); k++ )
        {
            if(mLD[k]<=25)
            {
            }
        }
    }
    void C()
    {
        B();
        std::cout << "C address  : " << &mLD << "\n";
        double distance = mLD[0];  //  <---- segmetation fault
    }
    std::array<double, 360> mLD;
};