#include <iostream>
#include <mutex>
std::mutex mtx// 全局互斥锁.
int main()
{
// 初始缺备塌化的时伏圆候l1已经是加锁状态,再次加锁崩溃
std::unique_lock<std::mutex>l1(mtx)
std::cout <<"1" <<std::endl
l1.unlock()
return 0
}
注:滚橡记得加头文件mutex和命名空间std
首先我们先找到Visual Studio编辑器中的“解决方案”,右键点击并在下拉菜单塌迟中找到属性并点击。点击后会出现一个d窗,在里面找到“调试源文件”,在右边列表中找到include文件夹的路径并复制下来。
在文件资源管理器中输入路径找到include文件夹。在include文件夹中新建一个文件夹bits。
在桌面创建一个txt文档,在文档中输入代码,这里提供一个万能头文件的代码和一个线性筛素数函数的代码。
//万能头文件代码 txt文档命名为stdc++
// C
#ifndef _GLIBCXX_NO_ASSERT
#include <cassert>
#endif
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#if __cplusplus >= 201103L
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdalign>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>
#endif
// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>告衫肢
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#if __cplusplus >= 201103L
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <袜世unordered_map>
#include <unordered_set>
#endif
//线性素数筛代码
bool vis[100005]
int prime[10005]
int cnt=0
void xianxingshai()
{
for(int i=2i<=100005i++)
{
if(!vis[i]) prime[++cnt]=i
for(int j=1j<=cnt,i*prime[j]<=100005j++)
{
vis[i*prime[j]]=1
if(i%prime[j]==0) break
}
}
}
//插入由此代码组成的头文件后 标识符cnt vis prime 将不可用
//prime[i]可表示第i个素数,直接使用即可
//素数不超过100005
然后将txt文档的后缀名从.txt改为.h,并复制到文件夹bits中(这里会显示需要提供管理员权限,直接点就可以了,不需要管)。
然后这些头文件就可以直接使用啦,使用方法如下所示:
这样制作一个自己的头文件就成功啦。
这个锁的方法我没用过,没法知道是不是旅宽你代码上的问题。。你试试我之前用过的一个方法吧,用的是关键段做的#include <windows.h>
#include <process.h> // 忘了是哪个头文如握件了
CRITICAL_SECTION lock // 锁的申明渣镇庆,在所有线程开始前
EnterCriticalSection(&lock) // 获取临界区锁
临界区动作
LeaveCriticalSection(&lock) // 释放临界区锁
DeleteCriticalSection(&lock) // 锁的销毁,在所有线程结束后
参考资料:
http://blog.csdn.net/morewindows/article/details/7442639
这个博客一系列文章讲解了很多线程的问题,值得一看。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)