blob: 2da29e8ed567f8173a5d491d1dcd5bd221da85e5 [file] [log] [blame]
license.botf003cfe2008-08-24 09:55:55 +09001// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
deanm@google.com1579ec72008-08-05 18:57:36 +09004
5#ifndef BASE_ATOMIC_SEQUENCE_NUM_H_
6#define BASE_ATOMIC_SEQUENCE_NUM_H_
7
8#include "base/atomicops.h"
9#include "base/basictypes.h"
10
11namespace base {
12
13class AtomicSequenceNumber {
14 public:
15 AtomicSequenceNumber() : seq_(0) { }
16
17 int GetNext() {
18 return static_cast<int>(
19 base::subtle::NoBarrier_AtomicIncrement(&seq_, 1) - 1);
20 }
21
22 private:
23 base::subtle::Atomic32 seq_;
24 DISALLOW_COPY_AND_ASSIGN(AtomicSequenceNumber);
25};
26
27} // namespace base
28
29#endif // BASE_ATOMIC_SEQUENCE_NUM_H_
license.botf003cfe2008-08-24 09:55:55 +090030