def gc.set_mode(mode):
    """
    Wybór aktualnego trybu działania mechanizmu usuwania nieużytków
    To jest ustawienie na poziomie procesu
    """
    if mode == "threaded":
        if not gc_is_threaded == False:
            # Uruchomienie wątku
            gc_thread.done.acquire(block=False)  # should not fail
            gc_is_threaded = True
            PyThread_start_new_thread(gc_thread)
    elif mode == "serial":
        if gc_is_threaded == True:
            # Obudzenie wątku i zakończenie jego działania
            gc_is_threaded = False
            gc_thread.wakeup.release()
            # Zaczekanie na zakończenie działania wątku
            Py_BEGIN_ALLOW_THREADS
            gc_thread.done.acquire()
            Py_END_ALLOW_THREADS
            gc_thread.done.release()
    else:
        raise ValueError("Nieobsługiwany tryb %r" % (mode,))
