摘要:
纤程(fiber)是一种由应用程序自己调度的轻量级线程。纤程不能被线程自动调用。一个线程可以创建任意多个纤程。如果想使用纤程,可以使用createfiber()创建,但是其处于挂起状态。即纤程创建后不能马上执行。一旦创建了纤程,可以通过纤程的地址在纤程之间转换,纤程本身不能完成这项工作,需要SwitchToFiber()来自己完成转换工作!一个纤程在以下两种情况下将暂停:1.线程调用了其他纤程;2.该纤程所在的线程用完了系统分配的时间片。1.LPVOID WINAPI ConvertThreadToFiber( LPVOID lpParameter);//参数为指向传给纤程的数据,可以通过Ge 阅读全文
摘要:
SuspendThread()暂停一个线程,ResumeThread()重启一个线程。参数均为线程的句柄。#include #include using namespace std;DWORD WINAPI mythread(void *p){ for(int i=0;i<100;i++) { cout<<"hello,everybody!"<<endl; ::Sleep(100); } return 0;}int main(){ HANDLE handle; DWORD dw; handle=::CreateThread(... 阅读全文
摘要:
CreateThread()创建一个新的线程。ExitThread()正常的结束一个线程的执行。CloseHandle()关闭一个线程的句柄。CreateThread()函数原型如下:HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes,//线程安全属性,(NULL表示不能被子进程继承) SIZE_T dwStackSize, //线程堆栈初始化大小,默认为0 LPTHREAD_START_ROUTINE lpStartAddress, //线程函数 LPVOID lpParameter, //线程参数 DWO 阅读全文
摘要:
因为我们经常使用向量类,所以在这里我们创建一个类似于向量的类加深我们对如何设计和实现一个类的理解。我们决定写一个模板类,这样可以使用户用Vec类存储几种不同类型的数据成员。模板类的写法:template class Vec{public: //接口private : //实现};因为这个类中要实现begin,end,size等函数的功能。所以Vec中要保存首元素地址,末元素地址和元素个数。我们可以只保存首元素地址和末元素地址,然后计算元素的个数。Vec类改进为:template class Vec{public: //接口private : T* data;//Vec中的首元素 T* li.. 阅读全文
摘要:
#include #include #include using namespace std;template T median(vector v){ typedef typename vector::size_type vec_sz;//注:关键字typename,说明vector::size_type是一个类型。 vec_sz size=v.size(); if(size==0) { throw domain_error("空的集合!"); } sort(v.begin(),v.end()); vec_sz mid=s... 阅读全文
摘要:
#include #include #include #include using namespace std;//根据空格等将字符串,拆分成多个单词。vector split(const string& s){ vector ret; typedef string::size_type string_size; string_size i=0; while(i!=s.size()) { while(i!=s.size() && isspace(s[i])) { ++i; } strin... 阅读全文
摘要:
bool space(char c){ return isspace(c);}bool not_space(char c){ return !isspace(c);}vector new_split(const string& s){ typedef string::const_iterator iter; vector ret; iter i=s.begin(); while(i!=s.end()) { i=find_if(i,s.end(),not_space);//find_if前两个参数指定一个序列,当第3个参数为TRUE时终止调... 阅读全文
摘要:
#include #include #include #include using namespace std;//根据空格等将字符串,拆分成多个单词。vector split(const string& s){ vector ret; typedef string::size_type string_size; string_size i=0; while(i!=s.size()) { while(i!=s.size() && isspace(s[i])) { ++i; } strin... 阅读全文
摘要:
#include #include #include #include #include #include //using std::vector;//using std::cin;//using std::cout;//using std::string;//using std::setprecision;//using std::endl; //using std::domain_error;//using std::istream;//using std::max;//using std::ios;//using std::setw;using namespace std;//查找中值d 阅读全文
摘要:
1. 添加MFC Dll项目。在全局区域添加需要用到的方法、类等信息。void _stdcall ShowDlg(){ AfxMessageBox(_T("动态链接库中的Dll对话框!"));}//-------------------------------//HBITMAP _stdcall GetBitmapFromDll(){ return LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDB_BITMAP_W));//IDB_BITMAP_W位图ID}//---------------------------- 阅读全文