# CSCI 373.001 starter
"Register for Fetch And Add"

import threading

class FetchAndAddRegister:
    "Register for Fetch And Add"
    def __init__(self, value=0):
        self.value = value
        self.__lock = threading.Lock()
    def fetch_and_add(self, increment: int) -> int:
        """ Perform the fetch and add operation"""
        with self.__lock:
            presval = self.value
            self.value = self.value + increment
            return presval
    def register_value(self) -> int:
        """ Returns register value """
        return self.value
    # The OS people would object
    # def __eq__(self, other_register):
    #    return self.value == other_register.value
    def __str__(self):
        return str(self.value)
