Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita32901b

Browse files
committed
Add clear resolved cache
1 parent3207f82 commita32901b

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

‎boost/network/protocol/http/policies/async_resolver.hpp‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ struct async_resolver : std::enable_shared_from_this<async_resolver<Tag> > {
3636
typedef std::function<void(resolver_type &, string_type, std::uint16_t,
3737
resolve_completion_function)> resolve_function;
3838

39-
voidclear_resolved_cache() { clear_cache_ =true; }
39+
voidclear_resolved_cache() { clear_cache_.store(true); }
4040

4141
protected:
4242
bool cache_resolved_;
43-
bool clear_cache_;
43+
std::atomic<bool> clear_cache_;
4444
endpoint_cache endpoint_cache_;
4545
std::shared_ptr<boost::asio::io_service> service_;
4646
std::shared_ptr<boost::asio::io_service::strand> resolver_strand_;
@@ -50,7 +50,7 @@ struct async_resolver : std::enable_shared_from_this<async_resolver<Tag> > {
5050

5151
voidresolve(resolver_type &resolver_, string_typeconst &host,
5252
std::uint16_t port, resolve_completion_function once_resolved) {
53-
if (cache_resolved_ && !clear_cache_) {
53+
if (cache_resolved_ && !clear_cache_.load()) {
5454
typename endpoint_cache::iterator iter =
5555
endpoint_cache_.find(boost::to_lower_copy(host));
5656
if (iter != endpoint_cache_.end()) {
@@ -77,8 +77,7 @@ struct async_resolver : std::enable_shared_from_this<async_resolver<Tag> > {
7777
typename endpoint_cache::iterator iter;
7878
bool inserted =false;
7979
if (!ec && cache_resolved_) {
80-
if (clear_cache_) {
81-
clear_cache_ =false;
80+
if (clear_cache_.exchange(false)) {
8281
endpoint_cache_.clear();
8382
}
8483
std::tie(iter, inserted) = endpoint_cache_.insert(std::make_pair(

‎boost/network/protocol/http/policies/sync_resolver.hpp‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ struct sync_resolver {
2727
typedef std::pair<resolver_iterator, resolver_iterator>
2828
resolver_iterator_pair;
2929

30-
voidclear_resolved_cache() { clear_cache_ =true; }
30+
voidclear_resolved_cache() { clear_cache_.store(true); }
3131

3232
protected:
3333
typedeftypename string<Tag>::type string_type;
3434
typedef std::unordered_map<string_type, resolver_iterator_pair>
3535
resolved_cache;
3636
resolved_cache endpoint_cache_;
3737
bool cache_resolved_;
38-
bool clear_cache_;
38+
std::atomic<bool> clear_cache_;
3939

4040
explicitsync_resolver(bool cache_resolved)
4141
: cache_resolved_(cache_resolved), clear_cache_(false) {}
@@ -44,8 +44,7 @@ struct sync_resolver {
4444
string_type/*unused*/const& hostname,
4545
string_typeconst& port) {
4646
if (cache_resolved_) {
47-
if (clear_cache_) {
48-
clear_cache_ =false;
47+
if (clear_cache_.exchange(false)) {
4948
endpoint_cache_.clear();
5049
}
5150
typename resolved_cache::iterator cached_iterator =

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp