| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 849 人关注过本帖
标题:原子操作函数的问题,求大神指教
只看楼主 加入收藏
宋立鹏
Rank: 2
等 级:论坛游民
帖 子:30
专家分:16
注 册:2012-7-5
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:5 
原子操作函数的问题,求大神指教
程序代码:
#include <iostream>
#include <process.h>
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
using namespace std;


volatile long g_nLoginCount;
unsigned int _stdcall Fun(void *pPM);
const int THREAD_NUM=50;
unsigned int _stdcall Fun(void *pPM)
{
    Sleep(1000);
    //g_nLoginCount++;
    InterLockedIncrement((LPLONG)&g_nLoginCount);
    Sleep(50);
    return 0;
}
int main()
{
    int num=20;
    while(num--)
    {
        g_nLoginCount=0;
    HANDLE handle[THREAD_NUM];
    for(int i=0;i<THREAD_NUM;i++)
    {
        handle[i]=(HANDLE)_beginthreadex(NULL,0,Fun,NULL,0,NULL);
    }
        WaitForMultipleObjects(THREAD_NUM,handle,TRUE,INFINITE);
        //printf("有%d个用户登录后记录结果是%dn",THREAD_NUM,g_nLoginCount);
        cout<<""<<THREAD_NUM<<"个用户登录后记录结果是"<<g_nLoginCount<<endl;
    }
        return 0;
   
}

 
运行结果显示error C3861: “InterLockedIncrement”: 找不到标识符,求大神指教
搜索更多相关主题的帖子: color 
2013-10-18 22:32
blueskiner
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:227
专家分:707
注 册:2008-9-22
收藏
得分:0 
这不明摆着的吗?那个函数没定义。
2013-10-18 23:04
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
找下那函数是那个头文件的,包含尽量,
查询下msdn吧

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-10-19 00:59
宋立鹏
Rank: 2
等 级:论坛游民
帖 子:30
专家分:16
注 册:2012-7-5
收藏
得分:0 
回复 3楼 yuccn
我查了一下MSDN,应该包含的是"windows.h",但是我头文件上也包含的有"windows.h"啊,还是不行
2013-10-19 08:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:20 
程序代码:
#include <windows.h>
#include <process.h>
#include <iostream>
using namespace std;

volatile long g_nLoginCount = 0;

unsigned int __stdcall fun( void* )
{
    //Sleep(1000);
    InterlockedIncrement( &g_nLoginCount );
    //Sleep(50);

    return 0;
}

int main()
{
    for( size_t i=0; i<20; ++i )
    {
        g_nLoginCount = 0;

        HANDLE handles[50];
        for( size_t i=0; i<_countof(handles); ++i )
            handles[i] = (HANDLE)_beginthreadex(NULL,0,&fun,NULL,0,NULL);

        WaitForMultipleObjects(_countof(handles),handles,TRUE,INFINITE);

        for( size_t i=0; i<_countof(handles); ++i )
            CloseHandle( handles[i] );

        cout<<""<<_countof(handles)<<"个用户登录后记录结果是"<<g_nLoginCount<<endl;
    }

    return 0;
}
2013-10-19 08:36
宋立鹏
Rank: 2
等 级:论坛游民
帖 子:30
专家分:16
注 册:2012-7-5
收藏
得分:0 
回复 5楼 rjsp
谢谢rjsp指点,我已经找到错误所在了,函数名字有一个字母写成大写了,汗颜
2013-10-19 15:03
快速回复:原子操作函数的问题,求大神指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018369 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved