diff --git a/rtc_base/synchronization/BUILD.gn b/rtc_base/synchronization/BUILD.gn
index 9d891f3..52c39d7 100644
--- a/rtc_base/synchronization/BUILD.gn
+++ b/rtc_base/synchronization/BUILD.gn
@@ -23,7 +23,6 @@
 
 rtc_library("mutex") {
   sources = [
-    "mutex.cc",
     "mutex.h",
     "mutex_critical_section.h",
     "mutex_pthread.h",
diff --git a/rtc_base/synchronization/mutex.cc b/rtc_base/synchronization/mutex.cc
deleted file mode 100644
index 6c2d6ff..0000000
--- a/rtc_base/synchronization/mutex.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Copyright 2020 The WebRTC Project Authors. All rights reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "rtc_base/synchronization/mutex.h"
-
-#include "rtc_base/checks.h"
-#include "rtc_base/synchronization/yield.h"
-
-namespace webrtc {
-
-#if !defined(WEBRTC_ABSL_MUTEX)
-void GlobalMutex::Lock() {
-  while (mutex_locked_.exchange(1)) {
-    YieldCurrentThread();
-  }
-}
-
-void GlobalMutex::Unlock() {
-  int old = mutex_locked_.exchange(0);
-  RTC_DCHECK_EQ(old, 1) << "Unlock called without calling Lock first";
-}
-
-GlobalMutexLock::GlobalMutexLock(GlobalMutex* mutex) : mutex_(mutex) {
-  mutex_->Lock();
-}
-
-GlobalMutexLock::~GlobalMutexLock() {
-  mutex_->Unlock();
-}
-#endif  // #if !defined(WEBRTC_ABSL_MUTEX)
-
-}  // namespace webrtc
diff --git a/rtc_base/synchronization/mutex.h b/rtc_base/synchronization/mutex.h
index c6af9e9..2cf0e67 100644
--- a/rtc_base/synchronization/mutex.h
+++ b/rtc_base/synchronization/mutex.h
@@ -72,41 +72,6 @@
   Mutex* mutex_;
 };
 
-// A mutex used to protect global variables. Do NOT use for other purposes.
-#if defined(WEBRTC_ABSL_MUTEX)
-using GlobalMutex = absl::Mutex;
-using GlobalMutexLock = absl::MutexLock;
-#else
-class RTC_LOCKABLE GlobalMutex final {
- public:
-  GlobalMutex(const GlobalMutex&) = delete;
-  GlobalMutex& operator=(const GlobalMutex&) = delete;
-
-  constexpr explicit GlobalMutex(absl::ConstInitType /*unused*/)
-      : mutex_locked_(0) {}
-
-  void Lock() RTC_EXCLUSIVE_LOCK_FUNCTION();
-  void Unlock() RTC_UNLOCK_FUNCTION();
-
- private:
-  std::atomic<int> mutex_locked_;  // 0 means lock not taken, 1 means taken.
-};
-
-// GlobalMutexLock, for serializing execution through a scope.
-class RTC_SCOPED_LOCKABLE GlobalMutexLock final {
- public:
-  GlobalMutexLock(const GlobalMutexLock&) = delete;
-  GlobalMutexLock& operator=(const GlobalMutexLock&) = delete;
-
-  explicit GlobalMutexLock(GlobalMutex* mutex)
-      RTC_EXCLUSIVE_LOCK_FUNCTION(mutex_);
-  ~GlobalMutexLock() RTC_UNLOCK_FUNCTION();
-
- private:
-  GlobalMutex* mutex_;
-};
-#endif  // if defined(WEBRTC_ABSL_MUTEX)
-
 }  // namespace webrtc
 
 #endif  // RTC_BASE_SYNCHRONIZATION_MUTEX_H_
diff --git a/rtc_base/synchronization/mutex_unittest.cc b/rtc_base/synchronization/mutex_unittest.cc
index a07e8fa..fcca78d 100644
--- a/rtc_base/synchronization/mutex_unittest.cc
+++ b/rtc_base/synchronization/mutex_unittest.cc
@@ -177,30 +177,5 @@
   EXPECT_EQ(0, runner.shared_value());
 }
 
-TEST(MutexTest, ProtectsSharedResourceWithGlobalMutexAndRawMutexLocker) {
-  std::vector<std::unique_ptr<Thread>> threads;
-  LockRunner<GlobalMutex, RawMutexLocker<GlobalMutex>> runner(absl::kConstInit);
-  StartThreads(threads, &runner);
-  runner.SetExpectedThreadCount(kNumThreads);
-  EXPECT_TRUE(runner.Run());
-  EXPECT_EQ(0, runner.shared_value());
-}
-
-TEST(MutexTest, ProtectsSharedResourceWithGlobalMutexAndMutexLocker) {
-  std::vector<std::unique_ptr<Thread>> threads;
-  LockRunner<GlobalMutex, MutexLockLocker<GlobalMutex, GlobalMutexLock>> runner(
-      absl::kConstInit);
-  StartThreads(threads, &runner);
-  runner.SetExpectedThreadCount(kNumThreads);
-  EXPECT_TRUE(runner.Run());
-  EXPECT_EQ(0, runner.shared_value());
-}
-
-TEST(MutexTest, GlobalMutexCanHaveStaticStorageDuration) {
-  ABSL_CONST_INIT static GlobalMutex global_lock(absl::kConstInit);
-  global_lock.Lock();
-  global_lock.Unlock();
-}
-
 }  // namespace
 }  // namespace webrtc
