前幾天一直在嘗試着一個事物,就是實作多線程周遊點兒樹啊、圖啊之類的,但是突發奇想多線程根類結合在一塊兒會産生什麼樣的小火兒花呢。。。。。
但是現在才發現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++基礎上的創作是思想革新的源泉。。。。。。