`

起线程,注意事项,生命周期

 
阅读更多
起线程,注意事项,生命周期

//收到交易弹出公告
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、生命周期
分享到:
评论

相关推荐

    vs2013创建多线程教程

    多线程编程的注意事项: * 需要同步线程的执行,以避免数据的不一致 * 需要正确地处理线程的生命周期 * 需要注意线程的优先级和调度 在 VS2013 平台中,创建多线程可以使用 CreateThread 函数或 AfxBeginThread ...

    Servlet生命周期

    #### 五、注意事项 - **资源依赖**:对于那些对外界资源(如文件访问、XML 解析等)有依赖的 Servlet,建议在应用加载时创建实例,以便在应用发布前就能发现错误。 - **异常处理**:在 `init()` 方法中处理好异常,...

    JAVA多线程的使用场景与注意事项总结

    JAVA多线程的使用场景与注意事项总结 Java多线程是Java语言中的一种重要机制,允许程序同时执行多个任务,以提高程序的执行效率和响应速度。在Java中,多线程可以通过继承Thread类、实现Runnable接口或使用线程池来...

    易语言多线程传递多参数

    线程的生命周期包括创建、运行、等待、结束等阶段,开发者需要合理管理线程,防止资源浪费或死锁。 三、多参数传递 在单线程中,我们可以直接通过变量或参数传递数据。但在多线程环境中,由于线程间的并发执行,...

    易语言源码多线程类源码.rar

    6. 多线程的挑战与注意事项:虽然多线程带来了性能提升,但同时也引入了复杂性,比如数据一致性问题、竞态条件、死锁等。开发者在使用多线程时需要注意避免这些问题,合理规划线程的生命周期,以及合理使用同步机制...

    在PB中实现 多线程的例子

    注意事项** - 线程安全:确保在多线程环境中访问共享资源时进行适当的锁定。 - 资源管理:谨慎处理线程的创建和销毁,避免资源泄露。 - 性能优化:合理设计线程数量,过多的线程可能导致系统资源过度消耗,影响性能...

    终止线程的源代码资源

    8. **注意事项** - **避免长时间阻塞操作**:如长时间I/O操作,应考虑使用异步或非阻塞I/O。 - **资源管理**:确保线程退出前关闭所有资源,如数据库连接、网络套接字等。 总之,终止线程需要谨慎处理,避免对...

    C# 多线程资料集合

    ASP.NET多线程编程则将多线程技术应用到Web开发中,可能会涵盖在ASP.NET环境中创建和管理线程的注意事项,因为Web服务器环境通常对线程有特殊的管理方式。开发者需要了解如何在ASP.NET中正确地使用线程,以避免影响...

    linux线程的基本概念

    - 资源管理:正确使用`pthread_join()`和`pthread_detach()`来管理线程生命周期,防止资源泄露。 - 互斥与同步策略:根据需求选择合适的同步机制,如互斥量、条件变量或信号量。 通过理解和应用上述Linux线程的基本...

    易语言超级列表框多线程源码

    在易语言中实现多线程,开发者可以使用易语言提供的线程控制命令,如“创建线程”、“结束线程”、“等待线程结束”等,来管理线程的生命周期。同时,为了保证数据的安全性和一致性,需要使用同步机制,如互斥量、...

    JAVA线程停止的方法

    本文将深入探讨Java线程停止的方法,特别是通过一个示例代码片段来解析如何利用标志变量(Flag)控制线程的生命周期,以及这种方法背后的原理与最佳实践。 ### Java线程停止方法概述 在Java中,直接调用线程的`...

    VC多线程编程

    2. **资源管理**:正确处理线程生命周期中的资源分配和释放。 3. **性能考量**:频繁的线程切换可能会导致性能下降,需合理设计线程数量。 4. **异常处理**:处理线程中可能发生的异常情况,确保程序的健壮性。 综...

    vc多线程编程

    二、多线程的优势与注意事项 多线程可以实现任务并行,避免单一任务长时间占用CPU,但同时也可能导致CPU频繁在不同线程间切换,增加开销。在单处理器系统中,多个线程实际上是通过时间片轮转的方式交替执行,而非...

    Windows多线程编程技术与实例(C++)(PDF)

    本书首先介绍了线程的基本概念,包括线程的创建、同步、通信以及线程的生命周期管理。理解线程的基本原理是掌握多线程编程的基础,读者会了解到线程如何与进程关联,以及线程间的执行顺序是如何控制的。 接着,书中...

    C++ 线程函数是类的成员函数

    三、注意事项 1. **数据同步**:尽管成员函数可以直接访问类的数据,但如果有多个线程同时访问,仍需考虑数据竞争问题。此时,可能需要使用`std::mutex`等同步原语来保护共享数据。 2. **线程生命周期**:确保在...

    C#线程参考手册中文版

    1. **线程创建与启动**:通过`Thread`类创建新线程,调用`Start`方法启动线程,理解线程的生命周期,包括新建、就绪、运行、阻塞、等待和终止等状态。 2. **同步与互斥**:理解线程同步的概念,如`Monitor`类用于的...

    Java线程培训资料

    2. **线程的状态(生命周期)** - **新建状态**:当创建了一个线程对象后,该线程处于新建状态。 - **就绪状态**:调用`start()`方法后,线程处于就绪状态,等待CPU分配时间片。 - **运行状态**:获得CPU时间片后...

    Java编写线程动画

    - **线程生命周期**:新建、就绪、运行、阻塞和死亡五种状态,了解这些状态及其转换对控制线程执行至关重要。 - **线程同步**:为了避免多线程环境下数据的不一致性,Java提供了synchronized关键字、wait()、...

    多线程学习文档

    ### 多线程学习文档知识点总结 #### 一、线程的基本概念及关系 ...在.NET环境中,利用`System.Threading.Thread`类提供的丰富API可以方便地管理线程生命周期,并确保多线程程序的安全性和稳定性。

    Linux多线程编程的高效开发经验.

    本文将深入探讨在Linux环境中进行多线程开发时的一些高效实践和注意事项。 首先,对于互斥锁的使用,Linux的Pthread库默认并不支持递归互斥锁。这意味着,如果一个线程已经持有了某个互斥锁,再次尝试加锁会引发...

Global site tag (gtag.js) - Google Analytics