Multithreading SC#U螺纹&x27;s wait()语句不阻止OS线程
我在较大的程序中同步线程时遇到一些问题,并注意到我的一些等待语句从未返回,因此我决定只编写一个简单的线程来测试等待的功能,并注意到它在Multithreading SC#U螺纹&x27;s wait()语句不阻止OS线程,multithreading,time,wait,systemc,Multithreading,Time,Wait,Systemc,我在较大的程序中同步线程时遇到一些问题,并注意到我的一些等待语句从未返回,因此我决定只编写一个简单的线程来测试等待的功能,并注意到它在SC_SEC级别被完全忽略。下面是我正在运行的示例: void Transmit::Tx(){ time_t t1, t2; while (1){ t1 = time(NULL); wait(10, SC_SEC); t2 = time(NULL); cout << t2
SC_SEC
级别被完全忽略。下面是我正在运行的示例:
void Transmit::Tx(){
time_t t1, t2;
while (1){
t1 = time(NULL);
wait(10, SC_SEC);
t2 = time(NULL);
cout << t2 - t1 << endl;
}
}
void传输::Tx(){
时间t1,t2;
而(1){
t1=时间(空);
等待(10秒);
t2=时间(空);
您是在尝试使用SystemC对硬件设计建模,还是尝试使用SystemC进行软件建模?
看来你把上下文弄混了
SystemC主要用于硬件设计建模(类似于VHDL和Verilog)
您在SystemC上下文中观察到的计时概念与真实世界的时间根本不相关
当然,当您在SystemC中切换线程时,您将始终观察到接近零的执行时间,因为它只是将执行上下文切换到其他线程,SystemC内核只是将虚拟时间(即模拟时间)与模型时间(虚拟时间)同步基于SystemC内核中的事件。但不是等待的目的(双精度,sc\U时间单位)在指定的时间段内停止线程执行?这是我不理解的。我使用systemc进行高级系统建模。我没有任何硬件或软件规范,只是一个基本的系统功能。如果我有一个线程,那么也没有线程可切换。这是否意味着忽略wait语句?这是否也意味着在给定的时间内只能运行一个线程?如果提供,请等待仅在指定的虚拟时间内停止线程执行。此外,根据OSCI SystemC的实现,您已经有一个执行线程,即SystemC内核自身和所有SC_方法在SC_THR时在SystemC内核线程的上下文中运行EAD映射到用户空间线程或系统线程,具体取决于OSCI SystemC内核配置。既然我提供了时间单位和值,为什么我的线程在代码中不暂停10秒?请查看聊天中的评论: