刚学c++不久,写一半不知道怎么完善了,希望可以得到解答(这个程序还应该加什么语句然后才能完成运算啊)
#include <stdio.h>
int main() {
int i,d,k,x,s=0;
scanf("%d,%d", &d,&k);
for(int i=0;i<k;i++)
{
x = x*10 + d;
s += x;
}
printf("%d\n", s);
return 0;
}
int x = 0;
for(int i=0;i<k;i++)
{
x = x*10 + d;
s += x;
}
上述程序利用构造和析构实现了自动在作用域中加锁与解锁,但是整体加锁解锁的颗粒度及作用域较大,我们可以通过使用块作用域来实现减小颗粒度的目的,代码如下:
#include <tchar.h>
#include <iostream>
#include <thread>
#include <mutex>
#include <windows.h>
#include "CMyMutex.h"
using namespace std;
int g_nData = 0;
// 创建临界区对象,等价于锁
CMyMutex g_mtx;
void foo() {
{
CMyLockGuard lg(g_mtx);
for (int i = 0; i < 100000; i++) {
g_nData++;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
std::thread t(foo);
{
CMyLockGuard lg(g_mtx);
for (int i = 0; i < 100000; i++) {
g_nData++;
}
}
t.join();
std::cout << g_nData << std::endl;
return 0;
}
对象及局部变量的作用域指的即为包含其的最小{},当运行出作用域,就会自动释放内存资源
。
4. 学习视频地址: 利用C++自己封装线程同步锁