繁体   English   中英

如何检查内存是否可用于读/写操作?

[英]How to check if memory is available for read/write operation?

我正在尝试在使用malloc()定义的内存中写入字符值,并同时从中读取字符值。 为此,我全局定义内存,然后启动线程。 在线程中,我正在将字符值写入内存,而在main()中,我正在从中读取值。 这是我的代码:

char *str = (char *) malloc(90000);
DWORD WINAPI Thread_no_1( LPVOID lpParam ) 
{
    int a=1;
    int c=0;
 LOOP:do
   {
        str[c] = 'a';
            c++;
            goto LOOP;
   }while( a < 2 );

    return 0;
}

int main()
{
int b=0;
char value;

int Data_Of_Thread_1 = 1;
HANDLE Handle_Of_Thread_1 = 0;
Handle_Of_Thread_1 = CreateThread( NULL, 0, Thread_no_1, &Data_Of_Thread_1, 0, NULL);  
if ( Handle_Of_Thread_1 == NULL)
ExitProcess(Data_Of_Thread_1);

    while(1);
    {
    value = str[b];
    printf("%c",value);;
    b++;
    }

    return 0;
}

现在,当我运行这段代码时,我得到了这个错误: 在此处输入图片说明 看来我无法同时读写。 因此,我的问题是,如何检查内存是否可用于读取和写入值?

 LOOP:do
   {
        str[c] = 'a';
            c++;
            goto LOOP;
   }while( a < 2 );

这是一个无限循环, goto LOOP; 每次迭代都被调用而没有机会检查while(a < 2)

没有“无法同时读写”之类的东西。 不同的线程分别执行。 即使在2个内核上,对内存的访问也由控制器处理,并且“同时”访问没有问题。 但是正如Alter Mann所说,第二线程没有从循环中退出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM