Mã heap nằm bên trong thành phần glibc và được đóng gói trong thư viện được chia sẻ libc.so.x. Việc thực hiện hiện tại của heap sử dụng nhiều sub-heap độc lập được gọi là arenas. Mỗi đấu trường có mutex riêng để bảo vệ đồng thời. Vì vậy, nếu có đủ các đấu trường trong một quá trình 'heap', và một cơ chế phân phối luồng của luồng truy cập đồng đều giữa chúng, thì tiềm năng tranh chấp cho các mutex sẽ là tối thiểu. Nó chỉ ra rằng điều này hoạt động tốt cho phân bổ. Trong malloc(), một thử nghiệm được thực hiện để xem liệu mutex cho đấu trường đích hiện tại cho luồng hiện tại là miễn phí (trylock). Nếu vậy thì đấu trường hiện đang bị khóa và tiền thu được phân bổ. Nếu mutex đang bận thì mỗi đấu trường còn lại sẽ được thử lần lượt và được sử dụng nếu mutex không bận. Trong trường hợp không có đấu trường nào có thể bị khóa mà không bị chặn, một đấu trường mới sẽ được tạo ra. Trường này theo định nghĩa chưa được khóa, do đó việc phân bổ có thể tiến hành mà không bị chặn. Cuối cùng, ID của đấu trường cuối cùng được sử dụng bởi một luồng được giữ lại trong lưu trữ cục bộ luồng, và sau đó được sử dụng làm đấu trường đầu tiên để thử khi malloc() tiếp theo được gọi bởi luồng đó. Do đó tất cả các cuộc gọi đến malloc() sẽ tiến hành mà không bị chặn.
Liên kết không hoạt động nữa;/ – kokosing