- 浏览: 204434 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (231)
- C++学习 (41)
- vc学习 (25)
- vc异常 (4)
- Flex (2)
- Ext (0)
- java学习笔记 (15)
- mysql学习笔记 (1)
- ibatis学习笔记 (7)
- struts1学习笔记 (1)
- hibernate学习笔记 (3)
- javascript学习笔记 (8)
- eclipse快捷键 (2)
- 英语学习 (1)
- cmd (1)
- eclipse 配置 (2)
- 其他 (4)
- JAVASE (34)
- firefox (1)
- linux (8)
- Apache (6)
- cms (22)
- jsuc (10)
- html (3)
- css (1)
- 作图 (2)
- vs2012 (2)
- 编码转换 (12)
- work_unicode (1)
- work_webbrowser (1)
- work_trade_quotes_login (1)
- c#学习 (38)
- wpf学习 (31)
- wpf快速学习 (1)
- VB学习 (1)
- NSIS (4)
- log4cpp (3)
- 学习web (1)
- 经验 (1)
- c_汇编 (1)
最新评论
起线程,注意事项,生命周期
1、
string转成LPVOID
(void*)(str.c_str());
2、
LPVOID转成string
string seq = (char*)pVoid;
string seq = (char* &)pVoid;这个的区别
3、生命周期
//收到交易弹出公告 void TradeMainUI::OnTradePoputBulletin(const string& seq) { //启动线程处理以下消息 char *temp = new char[128]; strcpy(temp, seq.c_str()); HANDLE hHandle = CreateThread(NULL, 0, TradePoputBulletinThread, (void*)(temp), 0, NULL); CloseHandle(hHandle); } DWORD WINAPI TradeMainUI::TradePoputBulletinThread(LPVOID pVoid) { try { string seq = (char*)pVoid; FTFutureTradeAgent* pAgent = (FTFutureTradeAgent*)((MQTradeRobot*)gPtrRobotQueen)->GetMarketTradeAgent(); TradeBulletin* pTradeBulletin = pAgent->GetTradeBulletinManager()->GetBulletinBySeq(seq); if(pTradeBulletin != NULL) { TCHAR tcTitle[512] = {0}; TCHAR tcContent[1024] = {0}; EncodingHandler::MByteToWChar(pTradeBulletin->GetTitle().c_str(), tcTitle, 512); EncodingHandler::MByteToWChar(pTradeBulletin->GetContent().c_str(), tcContent, 1024); MessageBoxEx(NULL, tcContent, tcTitle, MB_OK | MB_TOPMOST, -1); } if (pVoid != NULL) { delete pVoid; pVoid = NULL; } return 0; } catch(RunTimeException & rtex) { char cErro[1024] = {0}; sprintf(cErro,"\nTradePoputBulletinThread____%s\n",rtex.what()); OutputDebugStringA(cErro); //g_WriteLogInfo->WriteWithTime(cErro); if (pVoid != NULL) { delete pVoid; pVoid = NULL; } return 0; } catch(...) {} { //pAgent->_TradeObjIdLock.UnLock(); if (pVoid != NULL) { delete pVoid; pVoid = NULL; } return 0; } }
1、
string转成LPVOID
(void*)(str.c_str());
2、
LPVOID转成string
string seq = (char*)pVoid;
string seq = (char* &)pVoid;这个的区别
3、生命周期
发表评论
-
manifest
2015-06-08 17:57 1881我遇到的问题: 将 Upload.exe Upload.exe ... -
log4CPP多线程支持的缺角(一)(转)
2015-06-01 10:59 1010log4CPP多线程支持的缺角 ... -
minizip压缩文件夹(转)
2015-06-01 10:26 2255#include <atlconv.h> / ... -
文件大小(转)
2015-06-01 10:08 494方法一: WIN32_FIND_DATA fi ... -
log4cpp环境变量
2015-05-13 15:32 677log4cplus.appender.DEBUG_MSG.Fi ... -
linux设置环境变量putenv() setenv() getenv()(转)
2015-05-13 15:28 1201linux设置环境变量putenv() setenv() ge ... -
VC学习:log4cpp
2015-05-12 15:37 808基于LGPL开源项目 Log4cpp ... -
VC异常:File:write.c Line:67
2015-05-12 15:29 745VC异常:File:write.c Line:67 路径没找 ... -
C++异常:rethrow【转】
2015-05-08 15:20 421C++异常rethrow【转】 http://se.csai. ... -
VC异常:Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed(转)
2015-05-08 15:18 1179Free Heap block xxxxxxxx modifi ... -
VC异常:Free Heap block XXXXXX modified at XXXXXX after it was freed(转)
2015-05-07 15:41 3071Free Heap block XXXXXX modified ... -
VC中关于 0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值说明
2015-05-07 15:14 1165VC中关于 0xcccccccc、0xcdcdcdcd和 0x ... -
析构函数后,还可以调用函数成员
2015-05-07 15:13 885析构函数后,还可以调用函数成员 类的所有的函数成员的是编译时期 ... -
[size=medium] c,c#判断socket是否断开[/size]
2015-03-17 13:28 1101c,c#判断socke ... -
时间转换
2015-01-08 11:55 487时间转换 public static long DateT ... -
C++ localtime函数需要注意的地方
2015-01-08 11:42 1011time_t tLast = pLastFQKLineIt ... -
TerminateThread
2014-11-13 14:04 685TerminateThread. 如线程内部不涉及空间开辟, ... -
VC退出线程的方法(转载)
2014-10-23 17:39 732VC退出线程的方法 标题很简单,但是要讨论的地方不少; ... -
创建文件夹CreateDirectoryA(file, 0);
2014-10-23 17:19 1510创建文件夹CreateDirectoryA(file, 0) ... -
heap corruption detected错误解决方法调试方法以及内存管理相关(转载)
2014-10-23 16:57 1160heap corruption detected错误解决方法调 ...
相关推荐
多线程编程的注意事项: * 需要同步线程的执行,以避免数据的不一致 * 需要正确地处理线程的生命周期 * 需要注意线程的优先级和调度 在 VS2013 平台中,创建多线程可以使用 CreateThread 函数或 AfxBeginThread ...
#### 五、注意事项 - **资源依赖**:对于那些对外界资源(如文件访问、XML 解析等)有依赖的 Servlet,建议在应用加载时创建实例,以便在应用发布前就能发现错误。 - **异常处理**:在 `init()` 方法中处理好异常,...
JAVA多线程的使用场景与注意事项总结 Java多线程是Java语言中的一种重要机制,允许程序同时执行多个任务,以提高程序的执行效率和响应速度。在Java中,多线程可以通过继承Thread类、实现Runnable接口或使用线程池来...
线程的生命周期包括创建、运行、等待、结束等阶段,开发者需要合理管理线程,防止资源浪费或死锁。 三、多参数传递 在单线程中,我们可以直接通过变量或参数传递数据。但在多线程环境中,由于线程间的并发执行,...
6. 多线程的挑战与注意事项:虽然多线程带来了性能提升,但同时也引入了复杂性,比如数据一致性问题、竞态条件、死锁等。开发者在使用多线程时需要注意避免这些问题,合理规划线程的生命周期,以及合理使用同步机制...
注意事项** - 线程安全:确保在多线程环境中访问共享资源时进行适当的锁定。 - 资源管理:谨慎处理线程的创建和销毁,避免资源泄露。 - 性能优化:合理设计线程数量,过多的线程可能导致系统资源过度消耗,影响性能...
8. **注意事项** - **避免长时间阻塞操作**:如长时间I/O操作,应考虑使用异步或非阻塞I/O。 - **资源管理**:确保线程退出前关闭所有资源,如数据库连接、网络套接字等。 总之,终止线程需要谨慎处理,避免对...
ASP.NET多线程编程则将多线程技术应用到Web开发中,可能会涵盖在ASP.NET环境中创建和管理线程的注意事项,因为Web服务器环境通常对线程有特殊的管理方式。开发者需要了解如何在ASP.NET中正确地使用线程,以避免影响...
- 资源管理:正确使用`pthread_join()`和`pthread_detach()`来管理线程生命周期,防止资源泄露。 - 互斥与同步策略:根据需求选择合适的同步机制,如互斥量、条件变量或信号量。 通过理解和应用上述Linux线程的基本...
在易语言中实现多线程,开发者可以使用易语言提供的线程控制命令,如“创建线程”、“结束线程”、“等待线程结束”等,来管理线程的生命周期。同时,为了保证数据的安全性和一致性,需要使用同步机制,如互斥量、...
本文将深入探讨Java线程停止的方法,特别是通过一个示例代码片段来解析如何利用标志变量(Flag)控制线程的生命周期,以及这种方法背后的原理与最佳实践。 ### Java线程停止方法概述 在Java中,直接调用线程的`...
2. **资源管理**:正确处理线程生命周期中的资源分配和释放。 3. **性能考量**:频繁的线程切换可能会导致性能下降,需合理设计线程数量。 4. **异常处理**:处理线程中可能发生的异常情况,确保程序的健壮性。 综...
二、多线程的优势与注意事项 多线程可以实现任务并行,避免单一任务长时间占用CPU,但同时也可能导致CPU频繁在不同线程间切换,增加开销。在单处理器系统中,多个线程实际上是通过时间片轮转的方式交替执行,而非...
本书首先介绍了线程的基本概念,包括线程的创建、同步、通信以及线程的生命周期管理。理解线程的基本原理是掌握多线程编程的基础,读者会了解到线程如何与进程关联,以及线程间的执行顺序是如何控制的。 接着,书中...
三、注意事项 1. **数据同步**:尽管成员函数可以直接访问类的数据,但如果有多个线程同时访问,仍需考虑数据竞争问题。此时,可能需要使用`std::mutex`等同步原语来保护共享数据。 2. **线程生命周期**:确保在...
1. **线程创建与启动**:通过`Thread`类创建新线程,调用`Start`方法启动线程,理解线程的生命周期,包括新建、就绪、运行、阻塞、等待和终止等状态。 2. **同步与互斥**:理解线程同步的概念,如`Monitor`类用于的...
2. **线程的状态(生命周期)** - **新建状态**:当创建了一个线程对象后,该线程处于新建状态。 - **就绪状态**:调用`start()`方法后,线程处于就绪状态,等待CPU分配时间片。 - **运行状态**:获得CPU时间片后...
- **线程生命周期**:新建、就绪、运行、阻塞和死亡五种状态,了解这些状态及其转换对控制线程执行至关重要。 - **线程同步**:为了避免多线程环境下数据的不一致性,Java提供了synchronized关键字、wait()、...
### 多线程学习文档知识点总结 #### 一、线程的基本概念及关系 ...在.NET环境中,利用`System.Threading.Thread`类提供的丰富API可以方便地管理线程生命周期,并确保多线程程序的安全性和稳定性。
本文将深入探讨在Linux环境中进行多线程开发时的一些高效实践和注意事项。 首先,对于互斥锁的使用,Linux的Pthread库默认并不支持递归互斥锁。这意味着,如果一个线程已经持有了某个互斥锁,再次尝试加锁会引发...