讀取自旋鎖等多任務處理的東西,我面對這個代碼:用一個參數
#include <boost/range/algorithm.hpp>
#include <boost/atomic.hpp>
#include <boost/thread.hpp>
#include <iostream>
#include <vector>
class SpinLock
{
boost::atomic_flag flag;
public:
void lock()
{
while(flag.test_and_set(boost::memory_order_acquire))
;
}
bool try_lock()
{
return !flag.test_and_set(boost::memory_order_acquire);
}
void unlock()
{
flag.clear(boost::memory_order_release);
}
};
int main()
{
using namespace std; using namespace boost;
SpinLock lock;
vector<thread> v;
for(auto i = 0; i!=4; ++i)
v.emplace_back([&lock, i]
{
for(auto j = 0; j!=16; ++j)
{
this_thread::yield();
lock_guard<SpinLock> x(lock);
cout << "Hello from " << i << flush << "\tj = " << j << endl;
}
});
for(auto &t: v)
t.join();
}
你能解釋爲什麼只有一個參數?
那個冒號操作符是幹什麼的?
那是什麼東西?
你是否喜歡在常規的x86處理器上進行反彙編,在兩種情況下都會得到相同的結果? – Qeeet 2014-10-28 07:03:28
是的。生成的二進制/程序集將是相同的。 – Ajay 2014-10-28 07:04:32