Skip to content

Commit 2edc069

Browse files
committed
Explicitly init some std::atomic.
GitOrigin-RevId: bfbe95bd1aaed9c3ade31d9a7222b223bfece347
1 parent 0ac8c2d commit 2edc069

File tree

15 files changed

+42
-46
lines changed

15 files changed

+42
-46
lines changed

‎benchmark/bench_crypto.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ BENCH(TdRandFast, "td_rand_fast") {
110110
#if !TD_THREAD_UNSUPPORTED
111111
BENCH(SslRand, "ssl_rand_int32") {
112112
std::vector<td::thread> v;
113-
std::atomic<td::uint32> sum;
113+
std::atomic<td::uint32> sum{0};
114114
for (int i = 0; i < 3; i++) {
115115
v.push_back(td::thread([&] {
116116
td::int32 res = 0;

‎benchmark/bench_queue.cpp

+16-22
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@
2828
#include <sys/eventfd.h>
2929
#endif
3030

31-
using std::atomic;
32-
using std::vector;
33-
34-
using td::int32;
35-
using td::uint32;
36-
3731
#define MODE std::memory_order_relaxed
3832

3933
// void set_affinity(int mask) {
@@ -100,7 +94,7 @@ class Backoff {
10094
};
10195

10296
class VarQueue {
103-
atomic<qvalue_t> data;
97+
std::atomic<qvalue_t> data{0};
10498

10599
public:
106100
void init() {
@@ -218,17 +212,17 @@ const int queue_buf_size = 1 << 10;
218212
class BufferQueue {
219213
struct node {
220214
qvalue_t val;
221-
char pad[64 - sizeof(atomic<qvalue_t>)];
215+
char pad[64 - sizeof(std::atomic<qvalue_t>)];
222216
};
223217
node q[queue_buf_size];
224218

225219
struct Position {
226-
atomic<uint32> i;
227-
char pad[64 - sizeof(atomic<uint32>)];
220+
std::atomic<td::uint32> i{0};
221+
char pad[64 - sizeof(std::atomic<td::uint32>)];
228222

229-
uint32 local_read_i;
230-
uint32 local_write_i;
231-
char pad2[64 - sizeof(uint32) * 2];
223+
td::uint32 local_read_i;
224+
td::uint32 local_write_i;
225+
char pad2[64 - sizeof(td::uint32) * 2];
232226

233227
void init() {
234228
i = 0;
@@ -342,7 +336,7 @@ class BufferQueue {
342336
#if TD_LINUX
343337
class BufferedFdQueue {
344338
int fd;
345-
atomic<int> wait_flag;
339+
std::atomic<int> wait_flag{0};
346340
BufferQueue q;
347341
char pad[64];
348342

@@ -440,7 +434,7 @@ class BufferedFdQueue {
440434

441435
class FdQueue {
442436
int fd;
443-
atomic<int> wait_flag;
437+
std::atomic<int> wait_flag{0};
444438
VarQueue q;
445439
char pad[64];
446440

@@ -572,8 +566,8 @@ class QueueBenchmark2 : public td::Benchmark {
572566

573567
int server_active_connections;
574568
int client_active_connections;
575-
vector<td::int64> server_conn;
576-
vector<td::int64> client_conn;
569+
std::vector<td::int64> server_conn;
570+
std::vector<td::int64> client_conn;
577571

578572
public:
579573
explicit QueueBenchmark2(int connections_n = 1) : connections_n(connections_n) {
@@ -615,7 +609,7 @@ class QueueBenchmark2 : public td::Benchmark {
615609
}
616610

617611
void *server_run(void *) {
618-
server_conn = vector<td::int64>(connections_n);
612+
server_conn = std::vector<td::int64>(connections_n);
619613
server_active_connections = connections_n;
620614

621615
while (server_active_connections > 0) {
@@ -656,7 +650,7 @@ class QueueBenchmark2 : public td::Benchmark {
656650
}
657651

658652
void *client_run(void *) {
659-
client_conn = vector<td::int64>(connections_n);
653+
client_conn = std::vector<td::int64>(connections_n);
660654
client_active_connections = connections_n;
661655
if (queries_n >= (1 << 24)) {
662656
std::fprintf(stderr, "Too big queries_n\n");
@@ -732,7 +726,7 @@ class QueueBenchmark : public td::Benchmark {
732726
}
733727

734728
void *server_run(void *) {
735-
vector<td::int64> conn(connections_n);
729+
std::vector<td::int64> conn(connections_n);
736730
int active_connections = connections_n;
737731
while (active_connections > 0) {
738732
qvalue_t value = server.get();
@@ -756,7 +750,7 @@ class QueueBenchmark : public td::Benchmark {
756750
}
757751

758752
void *client_run(void *) {
759-
vector<td::int64> conn(connections_n);
753+
std::vector<td::int64> conn(connections_n);
760754
if (queries_n >= (1 << 24)) {
761755
std::fprintf(stderr, "Too big queries_n\n");
762756
std::exit(0);
@@ -789,7 +783,7 @@ class QueueBenchmark : public td::Benchmark {
789783
}
790784

791785
void *client_run2(void *) {
792-
vector<td::int64> conn(connections_n);
786+
std::vector<td::int64> conn(connections_n);
793787
if (queries_n >= (1 << 24)) {
794788
std::fprintf(stderr, "Too big queries_n\n");
795789
std::exit(0);

‎memprof/memprof.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ static int fast_backtrace(void **buffer, int size) {
7272
return i;
7373
}
7474

75-
static std::atomic<std::size_t> fast_backtrace_failed_cnt, backtrace_total_cnt;
75+
static std::atomic<std::size_t> fast_backtrace_failed_cnt;
76+
static std::atomic<std::size_t> backtrace_total_cnt;
7677
double get_fast_backtrace_success_rate() {
7778
return 1 - static_cast<double>(fast_backtrace_failed_cnt.load(std::memory_order_relaxed)) /
7879
static_cast<double>(std::max(std::size_t(1), backtrace_total_cnt.load(std::memory_order_relaxed)));

‎td/telegram/Global.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,8 @@ class Global : public ActorContext {
378378
int32 gc_scheduler_id_;
379379
int32 slow_net_scheduler_id_;
380380

381-
std::atomic<double> server_time_difference_;
382-
std::atomic<bool> server_time_difference_was_updated_;
381+
std::atomic<double> server_time_difference_{0.0};
382+
std::atomic<bool> server_time_difference_was_updated_{false};
383383
std::atomic<bool> close_flag_{false};
384384

385385
std::vector<std::shared_ptr<NetStatsCallback>> net_stats_file_callbacks_;

‎tdactor/td/actor/impl/ConcurrentScheduler.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class ConcurrentScheduler : private Scheduler::Callback {
8686
enum class State { Start, Run };
8787
State state_ = State::Start;
8888
std::vector<unique_ptr<Scheduler>> schedulers_;
89-
std::atomic<bool> is_finished_;
89+
std::atomic<bool> is_finished_{false};
9090
std::mutex at_finish_mutex_;
9191
std::vector<std::function<void()>> at_finish_;
9292
#if !TD_THREAD_UNSUPPORTED && !TD_EVENTFD_UNSUPPORTED

‎tddb/td/db/binlog/ConcurrentBinlog.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class ConcurrentBinlog : public BinlogInterface {
6363

6464
ActorOwn<detail::BinlogActor> binlog_actor_;
6565
string path_;
66-
std::atomic<uint64> last_id_;
66+
std::atomic<uint64> last_id_{0};
6767
};
6868

6969
} // namespace td

‎tdutils/td/utils/HazardPointers.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class HazardPointers {
2020
explicit HazardPointers(size_t threads_n) : threads_(threads_n) {
2121
for (auto &data : threads_) {
2222
for (auto &ptr : data.hazard) {
23-
ptr = nullptr;
23+
std::atomic_init(&ptr, nullptr);
2424
}
2525
}
2626
}

‎tdutils/td/utils/MemoryLog.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class MemoryLog : public LogInterface {
7777

7878
private:
7979
char buffer_[buffer_size];
80-
std::atomic<uint32> pos_;
80+
std::atomic<uint32> pos_{0};
8181
};
8282

8383
} // namespace td

‎tdutils/td/utils/MpmcQueue.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -306,9 +306,9 @@ class MpmcQueueOld {
306306
MpmcQueueBlock<T> block;
307307
//Got pad in MpmcQueueBlock
308308
};
309-
std::atomic<Node *> write_pos_;
309+
std::atomic<Node *> write_pos_{nullptr};
310310
char pad[TD_CONCURRENCY_PAD - sizeof(std::atomic<Node *>)];
311-
std::atomic<Node *> read_pos_;
311+
std::atomic<Node *> read_pos_{nullptr};
312312
char pad2[TD_CONCURRENCY_PAD - sizeof(std::atomic<Node *>)];
313313
size_t block_size_;
314314
HazardPointers<Node, 1> hazard_pointers_;
@@ -438,9 +438,9 @@ class MpmcQueue {
438438
char pad[TD_CONCURRENCY_PAD - sizeof(std::atomic<Node *>)];
439439
//Got pad in MpmcQueueBlock
440440
};
441-
std::atomic<Node *> write_pos_;
441+
std::atomic<Node *> write_pos_{nullptr};
442442
char pad[TD_CONCURRENCY_PAD - sizeof(std::atomic<Node *>)];
443-
std::atomic<Node *> read_pos_;
443+
std::atomic<Node *> read_pos_{nullptr};
444444
char pad2[TD_CONCURRENCY_PAD - sizeof(std::atomic<Node *>)];
445445
HazardPointers<Node, 1> hazard_pointers_;
446446
//Got pad in HazardPointers

‎tdutils/td/utils/SharedObjectPool.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class AtomicRefCnt {
3434
}
3535

3636
private:
37-
std::atomic<uint64> cnt_;
37+
std::atomic<uint64> cnt_{0};
3838
};
3939

4040
template <class DataT, class DeleterT>

‎tdutils/td/utils/buffer.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,14 @@ BufferRaw *BufferAllocator::create_buffer_raw(size_t size) {
103103
new (buffer_raw) BufferRaw();
104104
buffer_raw->data_size_ = size;
105105
buffer_raw->begin_ = 0;
106-
buffer_raw->end_ = 0;
106+
std::atomic_init(&buffer_raw->end_, 0);
107107

108-
buffer_raw->ref_cnt_.store(1, std::memory_order_relaxed);
109-
buffer_raw->has_writer_.store(true, std::memory_order_relaxed);
108+
std::atomic_init(&buffer_raw->ref_cnt_, 1);
109+
std::atomic_init(&buffer_raw->has_writer_, true);
110110
buffer_raw->was_reader_ = false;
111111
return buffer_raw;
112112
}
113+
113114
void BufferBuilder::append(BufferSlice slice) {
114115
if (append_inplace(slice.as_slice())) {
115116
return;

‎tdutils/td/utils/queue.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class SPSCBlockQueue {
6767
}
6868

6969
struct Position {
70-
std::atomic<uint32> i;
70+
std::atomic<uint32> i{0};
7171
char pad[64 - sizeof(std::atomic<uint32>)];
7272
uint32 local_writer_i;
7373
char pad2[64 - sizeof(uint32)];
@@ -252,7 +252,7 @@ class SPSCChainQueue {
252252
private:
253253
struct Node {
254254
BlockQueueT q_;
255-
std::atomic<bool> is_closed_;
255+
std::atomic<bool> is_closed_{false};
256256
Node *next_;
257257

258258
void init() {
@@ -399,7 +399,7 @@ class PollQueue : public QueueT {
399399

400400
private:
401401
EventFd event_fd_;
402-
std::atomic<int> wait_state_;
402+
std::atomic<int> wait_state_{0};
403403
int writer_wait_state_;
404404

405405
int get_wait_state() {

‎tdutils/test/HazardPointers.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#if !TD_THREAD_UNSUPPORTED
1616
TEST(HazardPointers, stress) {
1717
struct Node {
18-
std::atomic<std::string *> name_;
18+
std::atomic<std::string *> name_{nullptr};
1919
char pad[64];
2020
};
2121
int threads_n = 10;

‎tdutils/test/MpmcWaiter.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ TEST(MpmcWaiter, stress_one_one) {
1818
td::Stage check;
1919

2020
std::vector<td::thread> threads;
21-
std::atomic<size_t> value;
21+
std::atomic<size_t> value{0};
2222
size_t write_cnt = 10;
2323
td::unique_ptr<td::MpmcWaiter> waiter;
2424
size_t threads_n = 2;
@@ -64,8 +64,8 @@ TEST(MpmcWaiter, stress) {
6464
std::vector<td::thread> threads;
6565
size_t write_n;
6666
size_t read_n;
67-
std::atomic<size_t> write_pos;
68-
std::atomic<size_t> read_pos;
67+
std::atomic<size_t> write_pos{0};
68+
std::atomic<size_t> read_pos{0};
6969
size_t end_pos;
7070
size_t write_cnt;
7171
size_t threads_n = 20;

‎tdutils/test/misc.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ TEST(Misc, errno_tls_bug) {
9696
#if !TD_THREAD_UNSUPPORTED && !TD_EVENTFD_UNSUPPORTED
9797
EventFd test_event_fd;
9898
test_event_fd.init();
99-
std::atomic<int> s(0);
99+
std::atomic<int> s{0};
100100
s = 1;
101101
td::thread th([&] {
102102
while (s != 1) {

0 commit comments

Comments
 (0)