创建线程/协程执行多任务,应该是我们作为程序猿,一定会遇到的场景,下面就分别贴出三种的语言的使用方式,哪一种是你的菜?
- C++
typedef struct SParam
{
int No;
unsigned short chnlID;
unsigned short sessionID;
}uParam,*sParam;
DWORD WINAPI AccountManager(PVOID pParam);
void main()
{
DWORD dwThreadId;
HANDLE hThrd = NULL; // thread handle
SParam sparam;
SParam *p;
sparam.No = 1;
sparam.chnlID = 1;
sparam.sessionID = 1;
p = &sparam;
hThrd = (HANDLE)CreateThread(NULL,
0,
AccountManager,
p,
0,
dwThreadId);
}
DWORD WINAPI AccountManager(PVOID pParam)
{
sParam sparam;
sparam = (sParam)pParam;
logger.info("this is AccountManager,threadId is %d", GetCurrentThreadId());
}
- Java
public class ThreadDemo4 {
public static void main(String[] args) {
System.out.println("开始创建线程!");
//使用匿名内部类方式创建线程
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("run() i:" + i);
}
}
}).start();
System.out.println("创建线程結束!");
Thread.sleep(2000);
}
}
- Go
func main() {
go func(var param int) {
fmt.Println("coroutine run,", param)
}(1)
time.Sleep(time.Second)
}