本篇讲多线程、同步、互斥
第一,多线程
在windows下面,多线程的实现是很简单的,当然,在Linux下面也不难。
HANDLE PositonMonitorThread = CreateThread(NULL, 0, PositonMonitor, strategy, 0, NULL);
//用于策略定时获取账号持仓信息,与自身的理论持仓作对比,达到仓位监控功能。
CloseHandle(PositonMonitorThread);
上面两行代码就可以创建一个线程,返回的HANDLE还应该判断是否为NULL,在这里就不判断了。
当然,创建线程时,指定了线程函数PositonMonitor,还传了个参数strategy(这是个指针),然后就实现线程函数即可。
但线程函数的格式是固定的,参数和返回值都必须是下面这样写,其实Linux的线程函数格式也是固定的。
DWORD WINAPI PositonMonitor(LPVOID lpParameter) //定时查询-更新账号资金信息
{
Strategy* pStrategy = (Strategy*)lpParameter; //用于查询账号持仓数量
…
return 0;
}
在Linux下,
#include <stdio.h>
#include<pthread.h>
using namespace std;
void thread_func(void) //线程函数原型固定格式,参数和返回值都必须是void*,需要使用时,可强制转换。
{
printf(“This is a pthread