如果在另一篇文章中有明确的例子,请告诉我.我遇到了来自我的线程的交错打印问题.我试图通过在所有线程中使用共享变量来控制我的线程.下面的伪代码突出显示了我的代码片段给我带来的问题.我已经尝试了一切让线程轮流等待打印.现在只有少数输出线被销毁.
#!/usr/bin/perl
use threads;
use threads::shared;
my $PRINTFLAG :shared = 1;
Run_Threads();
sub Do_stuff{
lock($PRINTFLAG);
cond_wait($PRINTFLAG) until $PRINTFLAG == 1;
$PRINTFLAG = 0;
print "$working\n";
$PRINTFLAG =1;
}
Run Code Online (Sandbox Code Playgroud)
Sub生成线程.
sub Run_Threads{
my @threads;
for (my $i = 1; $i <= 5; $i++){
push @threads, threads->create(\&Do_stuff);
}
foreach (@threads){
$_->join;
}
}
Run Code Online (Sandbox Code Playgroud) 我确信这个问题之前已经被问过并得到回答,但如果没有正确的术语,我在搜索时遇到困难。
我有两个独特的结构 A 和 B (不是类)。我的代码使用函数重载来以不同的方式处理结构。我不明白如何处理声明多态性。对于伪代码示例,我深表歉意。
if( flag ==1 ){
declare stuct A scoped to main
}
else{
declare stuct B scoped to main
}
Run Code Online (Sandbox Code Playgroud)
上面的伪代码将不起作用,因为声明的范围在 if 语句内。由于我试图描述的范围问题,我的“真实”代码无法编译。
编辑
澄清:
根据指定的标志(arg),我想声明两个不同的结构之一。一旦声明了正确的结构,所有多态性都已由操作重载处理。
谢谢