123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef BASE_IOS_SCOPED_CRITICAL_ACTION_H_
- #define BASE_IOS_SCOPED_CRITICAL_ACTION_H_
- #include "base/macros.h"
- #include "base/memory/ref_counted.h"
- #include "base/synchronization/lock.h"
- namespace base {
- namespace ios {
- class ScopedCriticalAction {
- public:
- ScopedCriticalAction(StringPiece task_name);
- ~ScopedCriticalAction();
- private:
-
-
-
-
- class Core : public base::RefCountedThreadSafe<Core> {
- public:
- Core();
-
-
-
- static void StartBackgroundTask(scoped_refptr<Core> core,
- StringPiece task_name);
-
-
- static void EndBackgroundTask(scoped_refptr<Core> core);
- private:
- friend base::RefCountedThreadSafe<Core>;
- ~Core();
-
-
-
-
-
- unsigned int background_task_id_ GUARDED_BY(background_task_id_lock_);
- Lock background_task_id_lock_;
- DISALLOW_COPY_AND_ASSIGN(Core);
- };
-
- scoped_refptr<Core> core_;
- DISALLOW_COPY_AND_ASSIGN(ScopedCriticalAction);
- };
- }
- }
- #endif
|