当前位置: 首页 > news >正文

网站空间流量是什么科技网站首页欣赏

网站空间流量是什么,科技网站首页欣赏,搜索引擎外部链接优化,求人做网站的网站目录 一、创建线程的几种方法 1、使用POSIX线程库#xff08;pthread)#xff08;C#xff09; 2、 使用Windows线程库#xff08;Win32 API#xff09;#xff08;C#xff09; 3、使用C11标准库 二、线程的应用#xff08;常用实例#xff0c;附上完整代码pthread)C 2、 使用Windows线程库Win32 APIC 3、使用C11标准库 二、线程的应用常用实例附上完整代码 1、CreateThread创建线程的实例 一、创建线程的几种方法 在C/C中有多种方法可以创建线程以下列出了其中几种常用的方法 1、使用POSIX线程库pthread)C POSIX线程库是一套用于多线程编程的标准库在大部分类UNIX系统上都可以使用。可以使用pthread_create()函数来创建线程。 // C #include pthread.hvoid *threadFunc(void *arg) {// 线程的代码逻辑return NULL; }int main() {pthread_t tid;pthread_create(tid, NULL, threadFunc, NULL);// 主线程的代码逻辑pthread_join(tid, NULL); // 等待子线程执行完毕return 0; } 2、 使用Windows线程库Win32 APIC 在Windows操作系统上可以使用Win32 API来创建线程。可以使用CreateThread()函数来创建线程。 1CreateThread()的原型为 HANDLE CreateThread(   LPSECURITY_ATTRIBUTES   lpThreadAttributes,   SIZE_T                  dwStackSize,   LPTHREAD_START_ROUTINE  lpStartAddress,   LPVOID                  lpParameter,   DWORD                   dwCreationFlags,   LPDWORD                 lpThreadId ); 参数说明 lpThreadAttributes线程的安全属性默认为NULL。dwStackSize线程堆栈的大小默认为0表示使用默认的堆栈大小。lpStartAddress线程的入口函数地址可以是一个函数指针或者线程函数的名字。lpParameter传递给线程函数的参数。dwCreationFlags线程的创建标志可以设置一些额外的选项如CREATE_SUSPENDED创建后暂停等。lpThreadId用于接收线程ID的指针。 CreateThread函数创建一个新的线程并返回一个指向线程的句柄。通过这个句柄可以对线程进行一些操作如等待线程结束、挂起或恢复线程等。 2下面是一个简单的示例演示如何使用CreateThread创建一个新的线程 // c #include windows.hDWORD WINAPI threadFunc(LPVOID lpParam) {// 线程的代码逻辑return 0; }int main() {HANDLE hThread CreateThread(NULL, 0, threadFunc, NULL, 0, NULL);// 主线程的代码逻辑WaitForSingleObject(hThread, INFINITE); // 等待子线程执行完毕CloseHandle(hThread);return 0; } 3、使用C11标准库 在C11标准中引入了std::thread类可以方便地创建和管理线程。 // c #include threadvoid threadFunc() {// 线程的代码逻辑 }int main() {std::thread t(threadFunc); // 创建线程// 主线程的代码逻辑t.join(); // 等待子线程执行完毕return 0; } 4、AfxBeginThread MFC AfxBeginThread 是一个 MFCMicrosoft Foundation Class函数用于创建一个新的线程。它的含义是在应用程序中启动一个新的线程以便在后台执行一些任务而不会阻塞主线程的运行。 AfxBeginThread 函数的原型如下 CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority THREAD_PRIORITY_NORMAL, UINT nStackSize 0, DWORD dwCreateFlags 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs NULL ); 参数说明 pfnThreadProc指向线程函数的指针该线程函数将在新线程中执行。pParam传递给线程函数的参数。nPriority新线程的优先级默认为 THREAD_PRIORITY_NORMAL。nStackSize新线程的堆栈大小默认为 0表示使用默认堆栈大小。dwCreateFlags创建线程的标志默认为 0。lpSecurityAttrs线程安全属性默认为 NULL。 AfxBeginThread 函数将返回一个 CWinThread 对象的指针可以使用该指针来管理和控制新线程的行为如等待线程结束、获取线程ID等。 总之AfxBeginThread 函数用于创建一个新的线程并在新线程中执行指定的函数以实现多线程编程。 实例 // 声明一个变量继承于CWinThread UINT ReceiveMsgThreadID; CThreadReceiveRespMsg *pThreadReceiveMsg;//启动线程 pThreadReceiveMsg (CThreadReceiveRespMsg *)::AfxBeginThread(RUNTIME_CLASS(CThreadReceiveRespMsg), THREAD_PRIORITY_NORMAL); if (pThreadReceiveMsg ! NULL) {log(_T(线程1启动成功 \n));ReceiveMsgThreadID pThreadReceiveMsg-m_nThreadID; } else {log(_T(线程1启动失败 \n)); }以上是几种常用的创建线程的方法选择哪种方法取决于你的需求和运行环境。 二、线程的应用常用实例附上完整代码 1、CreateThread创建线程的实例 // 头文件 #pragma once #include singleton.h #include windows.hclass CThreadBase { public:CThreadBase(void);virtual ~CThreadBase(void);public:// 开启线程void vStart();// 结束线程virtual void vStop();// 线程是否可运行virtual bool isCanRun();// 子类重写此函数用于接收线程逻辑virtual int circle();// 入锁、解锁临界区不同的编译环境修改成其他的同步条件即可void _lock();void _unLock();protected:DWORD m_dThreadId; // 线程ID bool m_bCanRun; // 是否可以运行int m_nThreadHandle; // 线程句柄#ifdef WINVERCRITICAL_SECTION m_criSection; // 临界区定义一个需要数据同步的自取即可 #endif };// 源文件 #include ThreadBase.h //#include afxwin.h// 线程函数 DWORD WINAPI threadProc(LPVOID pArgs) {if (0 pArgs)return 0;CThreadBase* pThreadBase (CThreadBase*)pArgs;pThreadBase-circle();return 0; }CThreadBase::CThreadBase(void) {m_bCanRun false;m_dThreadId 0;m_nThreadHandle NULL;#ifdef WINVERInitializeCriticalSection(m_criSection); #endif }CThreadBase::~CThreadBase(void) { }void CThreadBase::vStart() {m_nThreadHandle (int)CreateThread(NULL, 0, threadProc, this, 0, m_dThreadId);m_bCanRun true; }void CThreadBase::vStop() {m_bCanRun false; }bool CThreadBase::isCanRun() {return m_bCanRun; }int CThreadBase::circle() {return TRUE; }void CThreadBase::_lock() { #ifdef WINVEREnterCriticalSection(m_criSection); #endif }void CThreadBase::_unLock() { #ifdef WINVERLeaveCriticalSection(m_criSection); #endif } 使用时候 1直接继承这个类子类重写circle() 这个函数即可这个函数用于接收线程的逻辑 2想让线程执行的功能可以写在子类的circle()中
http://www.pierceye.com/news/282481/

相关文章:

  • 百度一下百度网站苏州优秀网站设计企业
  • 通信管理局网站备案cms网站建设的实训总结
  • 西安知名网站建设公司百度网页版微信
  • 单纯python能完成网站开发吗门户网站衰落的原因
  • 唐山微网站建设价格宁波外贸网站推广优化
  • 如何能把网站做的更大赤峰网站建设赤峰
  • 织梦大气绿色大气农业能源化工机械产品企业网站源码模版网站设计是用ps做图吗
  • 长沙建设网站公司浙江网站建设上市公司
  • 成都艾邦视觉专业网站建设公司有内涵大气的公司名字
  • 制作学校网站编程基础知识大全
  • 建设银行网站买手机阿里云已备案域名购买
  • 12个优秀的平面设计素材网站wordpress 标题 拼音
  • 瑶海区网站建设公司上海app开发定制公司
  • 北海建设厅网站局域网的电脑怎么做网站服务器
  • 莱芜网站建设价格域名注册成功后怎么使用网站
  • 衡阳县建设局网站wordpress 图片缓存
  • 浙江门户网站建设公司新闻稿发布
  • 温州网站建设排名wordpress 汉化失败
  • 做数据可视化的网站推广类软文案例
  • 外包做网站的要求怎么写做网站 360
  • 温州网站建设价格技术微信公众号免费开通
  • 做网站推广销售怎么样辽宁省网站备案系统
  • html公司网站模板源码企业信息填报系统
  • 有口碑的赣州网站建设微信开放社区
  • 外贸网站做SEO电脑浏览器打不开网页是什么原因
  • 做网站需要下载啥google建站推广
  • 沈阳哪里有教做网站的会做网站怎么赚钱
  • iis如何做同时运行两个网站80端口做汽车网站费用
  • 网站规划与设计一千字网红营销模式
  • 西安 域名空间网站制作淘宝客网站主题下载