c 實現java synchronized關鍵字

2021-07-25 13:49:09 字數 1851 閱讀 7135

// 過載物件的"+= / -="實現訪問加鎖,過載 "=" 實現訪問解鎖。從而實現互斥訪問物件。

// 互斥模組類

#pragma once

#include "stdafx.h"

// 用於實現互斥的模版類

template

class csyncparam

;// 開啟互斥等待

template

void csyncparam::setlock()

// 釋放互斥物件

template

void csyncparam::releaselock()

// 解鎖訪問物件

template

csyncparamcsyncparam::operator=(csyncparam& csp)

// 加鎖讀寫

template

csyncparamcsyncparam::operator+=(csyncparam& csp)

// 加鎖讀寫

template

csyncparamcsyncparam::operator-=(csyncparam& csp)

// 互斥的資料

template

void csyncparam::makedata(t t)

template

csyncparam::~csyncparam()

template

csyncparam::csyncparam()

//template

//handle csyncparam::m_hmutex;

// 主檔案

// sync.cpp : 定義控制台應用程式的入口點。

// #include "stdafx.h"

#include "syncparam.h"

#include "process.h"

#include

using namespace std;

// 執行緒處理過程

void threadproc(void * pparam);

#define sync_param_start(value_type) csyncparam<##value_type>

#define sync_l csyncparam<

#define sync_r  >

// 宣告物件

sync_param_start(vector) cp;

//csyncparam> cp;

//csyncparam> * cy = new csyncparam>;

int _tmain(int argc, _tchar* argv)

// 填充資料

cp.makedata(vec);

// 開多個執行緒同時賣票

for (int i = 10; i >= 0; i--)

while (1)

sleep(10000);

printf("準備退出!");

return 0;

}//sync_param_start (vector) cy;

// 巨集拼接物件

sync_l vectorsync_r cy;

void threadproc(void * pparam)

if (vd.empty())

printf(「賣票編號:%2d 執行緒id:%d \n", vd.size(), getcurrentthreadid());

// 解鎖互斥結束

cp = cy;

sleep(10);

//cy->releaselock();

//cy->releaselock();}}

c 實現svm SVM演算法實現

前面我們介紹了svm演算法的原理,這裡通過python以及小例子來實現svm演算法。這裡主要介紹兩個例子,乙個例子通過調包實現svm,乙個例子通過程式設計實現。一 癌症資料集 資料來自國外某醫院癌症資料,資料量為100,劃分70條記錄用於訓練集,資料如下所示 圖中diagnosis result是癌...

c 實現佇列

主要是想聯絡一下c 中的模板怎麼使用,隨便複習一下佇列。佇列最基本的資料結構元素先進先出,這些就不多說了。注意 寫程式時copy建構函式和copy賦值函式的寫法。include includeusing namespace std templateclass queueitem queueitem ...

C 實現佇列

像棧一樣,佇列 queue 也是表。然而,使用佇列時插入在一端進行而刪除則在另一端進行,也就是先進先出 fifo 佇列的基本操作是enqueue 入隊 它是在表的末端 叫做隊尾 rear 插入乙個元素 還有dequeue 出隊 它是刪除 或返回 在表的開頭 叫做隊頭 front 的元素。同樣,佇列也...