×
SystemC uses simulation processes to model concurrency. It's not true concurrent execution.
When multiple processes are simulated as running concurrently, only one is executed at a particular time. However, the simulated time remain unchanged until all concurrent processes finishes their current tasks.
Thus, these processes are running concurrently on the same "simulated time". This differs from e.g. the Go language, which is real concurrency.

Let's understand the simulated concurrency with a simple example.
run
Learn with Examples, 2020, MIT license
#include <systemc>
using namespace sc_core;
SC_MODULE(CONCURRENCY) {
constructor
  SC_CTOR(CONCURRENCY) {
register thread1
    SC_THREAD(thread1);
register thread2
    SC_THREAD(thread2);
  }
  void thread1() {
infinite loop
    while(true) {
      std::cout << sc_time_stamp() << ": thread1" << std::endl;
trigger again after 2 "simulated" seconds
      wait(2, SC_SEC);
    }
  }
  void thread2() {
    while(true) {
      std::cout << "\t" << sc_time_stamp() << ": thread2" << std::endl;
      wait(3, SC_SEC);
    }
  }
};
int sc_main(int, char*[]) {
define an object
  CONCURRENCY concur("concur");
run simulation for 10 seconds
  sc_start(10, SC_SEC);
  return 0;
}
Result:
thread1 is running
0 s: thread1
thread2 is running
        0 s: thread2
thread1 is running
2 s: thread1
thread2 is running
        3 s: thread2
thread1 is running
4 s: thread1
thread2 is running
        6 s: thread2
thread1 is running
6 s: thread1
thread1 is running
8 s: thread1
thread2 is running
        9 s: thread2
simulation ends after 10 simulated seconds