天天看點

偶然發現C++的類跟多線程還能這樣兒定義

前幾天一直在嘗試着一個事物,就是實作多線程周遊點兒樹啊、圖啊之類的,但是突發奇想多線程根類結合在一塊兒會産生什麼樣的小火兒花呢。。。。。

但是現在才發現C++上越是基礎的東西就真的越是值得探索。。。。真的,基礎上多搞搞的話真的會實作很多的很奇妙的新東西,然後就覺的各種願望都能能夠實作了。。。。。

下邊看代碼:

#include <iostream>
#include <Windows.h>
#include <iostream>
#include <string.h>
#include <cstring>
using namespace std;

HANDLE cout_mutex;


class xiancheng1 {
public:
	void inital_xiancheng1() {
		cout << "我就是線程1" << endl;
	}
};
class xiancheng2 {
public:
	void inital_xiancheng2() {
		cout << "我就是線程2" << endl;
	}
};
class xiancheng3 {
public:
	void inital_xiancheng3() {
		cout << "我就是線程3" << endl;
	}
};
class xiancheng4 {
public:
	void inital_xiancheng4() {
		cout << "我就是線程4" << endl;
	}
};

class zhuxiancheng {
public:
	xiancheng1 xiancheng11;
	xiancheng2 xiancheng22;
	xiancheng3 xiancheng33;
	xiancheng4 xiancheng44;
	
};
	zhuxiancheng zhuxianchengduixiang;
DWORD WINAPI MyThread(LPVOID lpParamter)
{
	// 把lpParamter當成void指針就完事兒了
	int* a = (int*)lpParamter;
	WaitForSingleObject(cout_mutex, INFINITE);
	cout << "I have " << a[0] + 1 << " dolors!" << endl;
	if (a[0] == 0) {
        zhuxianchengduixiang.xiancheng11.inital_xiancheng1();
	}else if (a[0] == 1) {
        zhuxianchengduixiang.xiancheng22.inital_xiancheng2();
	}else if (a[0] == 2) {
		zhuxianchengduixiang.xiancheng33.inital_xiancheng3();
	}else if (a[0] == 3) {
		zhuxianchengduixiang.xiancheng44.inital_xiancheng4();
	}
	ReleaseMutex(cout_mutex);
	return 0L;
}
int main(){	
	int a[4];
	cout_mutex = CreateMutex(NULL, FALSE, NULL);
	for (int i = 0; i < 4; i++){
		a[i] = i;
		HANDLE hThread = CreateThread(NULL, 0, MyThread, a + i, 0, NULL);
	}
	system("PAUSE");
	return 0;
}
           

嗯。。。。不就是個類上的多線程建立類對象麼。。。

如果真的這麼簡單的話就真的沒啥必要發出來了。。。想想類還有多态呢,能很靈活地根據條件以多線程的形式建立同類的不同對象。。。。類還有繼承跟衍生呢,結合多線程是不是就又能以多線程形式制造出更多的子類子對象????還是帶條件内種?????

嗯,下邊是上邊代碼的一點點效果:

偶然發現C++的類跟多線程還能這樣兒定義
偶然發現C++的類跟多線程還能這樣兒定義

 嗯,為啥附帶先後生成跟依賴項選擇也是有内涵的。。。。。畢竟先後生成的話可以根據線程間共享記憶體通信,多線程與多線程共享記憶體通信,放大到類對象之間的共享記憶體通信,類子對象之間的共享記憶體通信。。。。。

嗯,C++基礎上的創作是思想革新的源泉。。。。。。