| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2016 Eyeo GmbH |
|
Oleksandr
2016/02/05 07:36:05
Nit: 2016
Eric
2016/02/08 17:34:07
Done.
| |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
| 13 * | 13 * |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 180 EnsureInitialized(); | 180 EnsureInitialized(); |
| 181 } | 181 } |
| 182 | 182 |
| 183 /** | 183 /** |
| 184 * Start an initialization thread if not already initialized and no initializa tion thread exists. | 184 * Start an initialization thread if not already initialized and no initializa tion thread exists. |
| 185 * | 185 * |
| 186 * \par Postcondition | 186 * \par Postcondition |
| 187 * - if returns, AlreadyStartedInitializer is true | 187 * - if returns, AlreadyStartedInitializer is true |
| 188 * - if throws, AlreadyStartedInitializer is false | 188 * - if throws, AlreadyStartedInitializer is false |
| 189 */ | 189 */ |
| 190 void SpawnInitializer() | 190 void SpawnInitializer() |
|
Oleksandr
2016/02/01 02:47:09
The double checked locking is really convoluted he
Eric
2016/02/03 14:19:01
[...]
Oleksandr
2016/02/05 07:36:05
I am not convinced converting passive threads into
Eric
2016/02/08 17:34:07
There's no other place to throw it. You can't thro
Eric
2016/02/08 17:34:07
It's not what we want, at least not now.
The diff
| |
| 191 { | 191 { |
| 192 if (AlreadyInitialized() || AlreadyStartedInitializer()) | 192 if (AlreadyInitialized() || AlreadyStartedInitializer()) |
| 193 { | 193 { |
| 194 return; // fast-return path | 194 return; // fast-return path |
| 195 } | 195 } |
| 196 // Assert we have neither completed nor started an initialization thread | 196 // Assert we have neither completed nor started an initialization thread |
| 197 /* | 197 /* |
| 198 * Try to obtain a lock, giving us permission to start the initialization th read. | 198 * Try to obtain a lock, giving us permission to start the initialization th read. |
| 199 * try_lock() is not reliable, that is, it can sometimes fail to lock when t he mutex is unlocked. | 199 * try_lock() is not reliable, that is, it can sometimes fail to lock when t he mutex is unlocked. |
| 200 * It is, however, guaranteed to succeed eventually. | 200 * It is, however, guaranteed to succeed eventually. |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 249 { | 249 { |
| 250 EnsureInitializedNoexcept(); | 250 EnsureInitializedNoexcept(); |
| 251 if (initializerException) | 251 if (initializerException) |
| 252 { | 252 { |
| 253 std::rethrow_exception(initializerException); | 253 std::rethrow_exception(initializerException); |
| 254 } | 254 } |
| 255 } | 255 } |
| 256 }; | 256 }; |
| 257 | 257 |
| 258 #endif // _DETACHED_INITIALIZATION_H_ | 258 #endif // _DETACHED_INITIALIZATION_H_ |
| LEFT | RIGHT |