上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页
摘要: 前面讲了临界区可以用来达到线程同步.而事件(event)与互斥(mutex)也同样可以做到.Win32 API中的线程事件HANDLE hEvent = NULL;void MainTestFun{hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);SetEvent(hEvent);char g_charArray[4];CString szResult;//下面三个线程中的任意一个访问g_charArray的时候其他线程都不能访问AfxBeginThread(FunOne,NULL); //FunOne给数组赋值全为SAfxBeginThread(FunT 阅读全文
posted @ 2013-07-12 09:41 友琼 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 当多个线程同时使用相同的资源时,由于是并发执行,不能保证先后顺序.所以假如时一个公共变量被几个线程同时使用会造成该变量值的混乱.下面来举个简单例子.假如有一个字符数组变量char g_charArray[4];CString szResult;AfxBeginThread(FunOne,NULL); //FunOne给数组赋值全为SAfxBeginThread(FunTwo,NULL); //FunTwo也给数组赋值全为BAfxBeginThread(GetResult,NULL); //得到数组的值,本来期望的值为最后一次赋的值BBBB.但实际结果是不确定的,可能是SBSB,SSBB或者其它 阅读全文
posted @ 2013-07-12 09:40 友琼 阅读(2080) 评论(0) 推荐(0) 编辑
摘要: .CPP文件第一步#define WM_MySHOWDINGDU (WM_USER+100)#define WM_MySTOP (WM_USER+101)#define WM_UpLoadSucce (WM_USER +102)#define WM_UPRESULT (WM_USER + 103)#define WM_CANCELUPLOAD (WM_USER + 104)第二步;BEGIN_MESSAGE_MAP(CScreenDefineView , CFormView) ON_MESSAGE( WM_MySHOWDINGDU , Jingdutiao ) ... 阅读全文
posted @ 2013-07-12 09:12 友琼 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。 如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处理结果,这就很有可能得到有关处理结果的错误了解。例如,多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题。如果一个线程负责改变此变量的值,而其他线程负责同时读取变量内容,则不能保证读取到的数据是经过写线程修改后的。 为了确保读线程读取到的是经过修改的变量,就必须在向变量写入数据时禁止其他线程... 阅读全文
posted @ 2013-07-11 18:22 友琼 阅读(271) 评论(0) 推荐(0) 编辑
摘要: //解析数据函数指针typedef int ( __stdcall *ParseDataPFun)(HOBJECT hObj, const BYTE* pBuffer, int nLength);typedef int ( __stdcall *ParseDataPFunEx)(HOBJECT hObj, const BYTE* pBuffer, int nLength , byte* pInfoBuf , int nInfoBufSize);int SendAndParseData( HOBJECT hObj , int nPackCount , ParseDataPFun pPa... 阅读全文
posted @ 2013-07-05 16:25 友琼 阅读(182) 评论(0) 推荐(0) 编辑
摘要: CListCtrl控件的创建如果一个CListCtrl控件对象和dialog上的控件已经绑定,那么可以跳过这个这一步,因为绑定了的对象已经完成了创建。但是如果要在dialog上凭空创建出来一个列表控件,那么就需要了解CListCtrl类的成员函数:Create先看这个函数的原型:BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );第一个参数是用来声明这个列表的风格,具体风格如下 :LVS_ALIGNLEFT Specifies that items are left-aligned in 阅读全文
posted @ 2013-07-04 21:59 友琼 阅读(649) 评论(0) 推荐(0) 编辑
摘要: MFC编程实例二:进度条的使用2011-03-22 09:09:09|分类:C++(C语言)|标签:进度nlowernupper添加mfc|字号订阅本人用的可以的BOOLCEx040105eDlg::OnInitDialog(){m_progress.SetRange( 0 ,100 );//设置进度的下限和上限,默认值是0和100。m_progress.SetStep(5);//设置StepIt一次移动多少进度,默认值是10。 m_progress.SetPos(0);//设置进度条的初始进度。 m_progress.SetPos(0);//设置当前进度条位置;} 实现函数:void Snd 阅读全文
posted @ 2013-07-02 15:48 友琼 阅读(812) 评论(0) 推荐(0) 编辑
摘要: ListBox的操作比较简单:1添加数据 声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content. m_ListBox_Content.AddString(_T("123")); m_ListBox_Content.AddString(_T("汉字")); m_ListBox_Content.AddString(_T("English"));m_ListBox_Content.AddString(_T("!@#$%^&*()"));2获取数据 CStrin 阅读全文
posted @ 2013-07-01 21:40 友琼 阅读(1224) 评论(0) 推荐(0) 编辑
摘要: c语言判断 文件是否存在PathFileExists()为TRUE 存在,否则不存在获取运行程序路径 char path[MAX_PATH]; GetModuleFileName(NULL, path, MAX_PATH); //获取到完整路径如:E:/Tools/qq.exe PathRemoveFileSpec( path );//获取到的是程序所在文件夹如:E:/Tools CString strPathname ; strPathname.Format("%s\\",path); return strPathname//获取运行程序路径 char path[MAX_ 阅读全文
posted @ 2013-06-29 15:25 友琼 阅读(491) 评论(0) 推荐(0) 编辑
摘要: int nValude = 0;CString strtemp("asdb");; sscanf(strtemp.GetBuffer(0),"%x",&nValude); 阅读全文
posted @ 2013-06-27 09:12 友琼 阅读(369) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 12 下一页