2018-10-23 20:41:09 +03:00
|
|
|
/*
|
2019-06-20 02:58:25 +03:00
|
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
2018-10-23 20:41:09 +03:00
|
|
|
*
|
2019-06-20 02:58:25 +03:00
|
|
|
* This software may be used and distributed according to the terms of the
|
|
|
|
* GNU General Public License version 2.
|
2018-10-23 20:41:09 +03:00
|
|
|
*/
|
2019-10-11 15:26:59 +03:00
|
|
|
|
2018-10-23 20:41:09 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
namespace facebook {
|
|
|
|
namespace eden {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Very efficiently returns a new uint64_t unique to this process. Amortizes
|
|
|
|
* the cost of synchronizing threads across many ID allocations.
|
|
|
|
*
|
2018-11-10 22:10:59 +03:00
|
|
|
* All returned IDs are nonzero.
|
|
|
|
*
|
|
|
|
* TODO: It might be beneficial to add a parameter to request more than one
|
|
|
|
* unique ID at a time, though such an API would make it possible to exhaust
|
|
|
|
* the range of a 64-bit integer.
|
2018-10-23 20:41:09 +03:00
|
|
|
*/
|
2018-11-10 22:10:59 +03:00
|
|
|
uint64_t generateUniqueID() noexcept;
|
2018-10-23 20:41:09 +03:00
|
|
|
|
|
|
|
} // namespace eden
|
|
|
|
} // namespace facebook
|