小编pra*_* pp的帖子

我的代码引发了TASKING_ERROR?

假定以下情况:有一个用于存放硬币的盒子人们从盒子里拿钱人们在盒子里放钱我已经将任务输入为Add,Subtract,Read和Write。下面是我的代码。现在我很困惑如何调用条目加,减和阅读以达到上述要求,请帮助

   with Ada.Text_IO,ada.integer_text_io;
   use ada.text_io,ada.integer_text_io;
     procedure protected_imp is
     task type box(initial_value:integer;min_value:integer;max_value:integer) is
     entry add(number:integer); 
     entry subtract(number:integer);
     entry read;
      end box;
  task body box is 
  x:integer:=initial_value; --shared variable
   begin
   loop                  --why raised TASKING_ERROR when loop is removed?
select
   when x<max_value=>
   accept add(number:integer)do
   x:=x+number;
   end add;
or  
    when x>min_value=>
    accept subtract(number:integer) do
    x:=x-number;
    end subtract;
or
    accept read do
    put("coins");
    put_line(integer'image(x));
    end read;
or
   delay(5.0);
  put("no request received for 5 seconds");
  end select;
 end loop;
 end box;
  go:box(1,0,10);
  begin ----- how to …
Run Code Online (Sandbox Code Playgroud)

concurrency ada task

5
推荐指数
1
解决办法
932
查看次数

使用库函数fopen()打开文件时,与文件关联的缓冲区大小是多少?

当使用fopen()打开FILE时,与其关联的缓冲区用于从文件写入和读取,这样做是为了避免直接访问磁盘,因为它很昂贵.

我在一些在线教程中发现,当我们将文件加载到主内存(RAM)时,四个东西被创建stdin,stdout,stderror,Buffer和这个缓冲区用于读/写文件,我很想知道多大的操作系统为此缓冲区分配是否依赖于OS体系结构?有没有可能知道它的大小?

c size buffer operating-system memory-management

3
推荐指数
1
解决办法
174
查看次数

Ada语句'accept start do'中的任务没有完成所有执行?

Ada'accept start do'中的任务是否未完成其所有执行?

接受开始做

这里'do'关键字强制编译器完成do和end关键字之间的所有执行提及但为什么在下面的代码中它不会发生?为什么它打印其他任务主体即第一个(任务名称)而不是它自己的任务(即启动)下面的代码?请帮我理解我哪里出错了?

procedure main is
   task first is
      entry start;
   end first;

   task body first is
   begin
      accept start ;   -- i am not using do here

      put_line("first");
      put_line("first");
      put_line("first");
   end first;

   task second is
      entry start;
   end second;

   task body second is
   begin
      accept start do -- here 'do' keyword will force compile to finish all the execution between keyword 'do' and end? but why it is mixing statement of task first? 
         for i in 1..10 …
Run Code Online (Sandbox Code Playgroud)

ada task

2
推荐指数
1
解决办法
154
查看次数

如何获得#if预处理器条件包含一个变量而不产生错误?

#if包含编译时变量的预处理程序阶段语句如何在预处理器阶段自行解析?

下面是运行没有任何错误的代码:

#include<stdio.h> 

void main()
{
   int num=10; /* compile time */

#if((num%2)==0)  /* #if is preprocessor stage but has num of compile time why not error here? */
   printf("\nNumber is Even");
#else
   printf("\nNumber is Odd");
#endif 
}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

2
推荐指数
1
解决办法
93
查看次数

我无法弄清楚下面的代码如何生成输出为ffffffaa请帮助我理解?

您好我无法弄清楚下面的代码如何生成输出为ffffffaa请帮助我理解

#include<stdio.h>
 int main()
{
  int a=0xaaaaaaaa;
  char *p=(char*)&a;
  printf("%x\n",*p);
}  
Run Code Online (Sandbox Code Playgroud)

c pointers

-1
推荐指数
1
解决办法
109
查看次数