小编Ras*_*yak的帖子

我无法理解优先级倒置会如何发生

HPT - >最高优先级任务.
MPT - >中优先级任务
LPT - >低优先级任务

您好朋友,我从许多网站上阅读优先级倒置(例如http://www.embeddedheaven.com/priority-inversion-2.htm).但我想知道,为什么HPT不能抢占LPT?如果您将阅读3.3无界反转部分,它说如果LPT已经获得资源,那么如果HPT已准备好但由于LPT而被阻止.但是如果MPT准备就绪,那么它会抢占LPT并自行执行.然后LPT必须等到MPT结束.MPT完成后,LPT恢复.一旦LPT完成,HPT就会启动.所以我的问题是为什么HPT不能抢占LPT或MPT?

c embedded operating-system rtos scheduled-tasks

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

为什么 setTimer 不起作用?

我有以下程序。我想知道如何setTimer运作。因此,我编写了一个程序,但无法理解为什么 TimerProc 函数没有被调用。为什么?还需要做什么来触发 setTimer/TimerProc。请帮忙。

#include <windows.h>
#include <stdio.h>

VOID CALLBACK TimerProc(
    HWND hwnd,  // handle of window for timer messages 
    UINT uMsg,  // WM_TIMER message
    UINT idEvent,   // timer identifier
    DWORD dwTime    // current system time
   ) {
      printf("from callback\n");

   }
int main(int argc, char *argv[])
{
   UINT timerid = SetTimer(NULL,1,1000,TimerProc);/*changed the time from 1 to 1000, but no effect*/
   printf("timerid %d\n",timerid); 
   int i,j;

      //delay loop, waiting for the callback function to be called
   for(j=0;j<0xffffffff;j++);
   /*{
   printf("%d\n", j); …
Run Code Online (Sandbox Code Playgroud)

c winapi timer visual-studio-2010

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

为什么以下程序会进行无限循环?

当我执行这个belo程序时,它正在5无意中打印.为什么?是因为减量没有发生还是在减量发生之前函数调用正在发生?

我尝试了替代方式制作fun(--n),它给了我正确的答案.但为什么它不起作用fun(n--)

void fun(int n)
{
    if(!n)
    {
        cout << n << " " << endl;
    }
    else
    {
        cout << n << " "<<endl;
        fun(n--);
    }
}

int main()
{
    int n = 5;
    fun(n);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ recursion decrement

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

LoadLibrary无法正常工作

我已经创建了一个*.exe*.dll我的项目.我提供了所有正确的路径和数据. Myexe.cpp:

#include "stdafx.h"
#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
    HMODULE hInstLibrary = LoadLibrary(L("..\\Debug\\LoadDLL\\LoadDLL.dll"));// I have checked with complete path as well.
    if(hInstLibrary)
    {
        printf("Hello World");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

MyDLL.cpp:

#include "MyDLL.h"
#include <stdio.h>

    MyDLL::MyDLL(void)
    {

}


MyDLL::~MyDLL(void)
{
}

extern "C" __declspec(dllexport) void HelloWorld()
{
    printf("Hello DLL");
}
Run Code Online (Sandbox Code Playgroud)

MyDLL.h:

#pragma once
class __declspec(dllexport) MyDLL
{
public:
    MyDLL(void);
    ~MyDLL(void);
};

extern "C" __declspec(dllexport) void HelloWorld();
Run Code Online (Sandbox Code Playgroud)

我也试过提供complete path.但它仍然失败.这hInstLibrary …

c++ dll visual-studio-2010

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

CPP_TEST.exe中0x7604c128处的未处理异常:0xC00000FD:堆栈溢出

为什么stackover flow会出现在我正在使用的地方fflushfree我的代码中.请帮我.

using namespace std;

    struct abc{
        int x;int y;
        }abc;

int _tmain(int argc, _TCHAR* argv[])
{
    struct abc *xyz = (struct abc *) malloc(sizeof(struct abc));
    xyz->x = 5;
    printf("%d\n", xyz->x);
    //system("pause");
        free(xyz);
     // xyz = NULL;
        fflush(stdout);
        _tmain(NULL, NULL);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑代码:

xyz:
    struct abc *xyz = (struct abc *) malloc(sizeof(struct abc));
    xyz->x = 5;
    printf("%d\n", xyz->x);
    //system("pause");

    free(xyz);
    xyz = NULL;
    fflush(stdout);
    goto xyz;
Run Code Online (Sandbox Code Playgroud)

c c++ malloc free

0
推荐指数
1
解决办法
1831
查看次数

运营商的开发如何运作

我有以下代码

class rectangle
{
    //Some code ...
    int operator+ (rectangle r1)
    {
        return(r1.length + length);//Length is the 1st argument of r1, r2, r3
    }
};
Run Code Online (Sandbox Code Playgroud)

在主要功能

int main()
{
    rectangle r1(10,20);
    rectangle r2(40,60);
    rectangle r3(30,60);
    int len = r1 + r3;
}
Run Code Online (Sandbox Code Playgroud)

在这里,如果我们将看到operator+(),我们正在做r1.length + length.编译器如何知道length返回语句中的第二个属于对象r3不是r1r2?我想答案可能在于main()我们写的

int len = r1 + r3;
Run Code Online (Sandbox Code Playgroud)

如果是这种情况那么我们为什么需要写入

operator+ (....) 
{
    r1.lenth + lenth; //Why not length + length?
}
Run Code Online (Sandbox Code Playgroud)

为什么不length …

c++ operator-overloading

0
推荐指数
1
解决办法
203
查看次数

无法跟踪Map在C++中的工作方式

在下面的代码中,而不是将输出视为

0 -> 1 2
1 -> 2 3
..
..
99 ->100 101
Run Code Online (Sandbox Code Playgroud)

我得到输出,

0 -> 100 101
1 -> 100 101
...
99 -> 100 101
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题,究竟哪里出错了?我发现调试时,在第一次迭代中它存储

0 -> 1 2
Run Code Online (Sandbox Code Playgroud)

它更新的第二次迭代,如,

0 -> 2 3
1 -> 2 3
Run Code Online (Sandbox Code Playgroud)

为什么?

class abc{
    public:
        int x, y;
};
std::map<int, abc*> MAP;
int main()
{
    abc *ab;
    ab = new abc();
    int i = 0;
    for(i = 0; i < 100; i++)
    {
        ab->x = i + 1;
        ab->y …
Run Code Online (Sandbox Code Playgroud)

c++ map

0
推荐指数
1
解决办法
119
查看次数

在C++中混淆了delete关键字opearation

我想知道删除是如何工作的?在主要功能我删除了cfact object.但仍然是cfact->Hello()工程,而不是抛出错误.在我发现删除时发现的调试时,cfact释放内存.一旦factory* c2fact = newfun.Newfun("c2_fact");行执行cfact获得一些内存位置.

怎么样?请帮助我理解这个概念..

class factory{

public:
    virtual void Hello() = 0;
};
class c_fact: public factory
{
public:
    void Hello(){
    cout << "class c_fact: public factory"<<endl;
    }
};
class c2_fact: public factory
{
public:
    void Hello(){
    cout << "class c2_fact: public factory"<<endl;
    }
};

class callFun{
public:
    virtual factory* Newfun(string data)
    {
        if(data == "c_fact")
            {return new c_fact;}
        else
            {return new c2_fact;}
    }
};
class newFun:public callFun{ …
Run Code Online (Sandbox Code Playgroud)

c++ virtual-functions new-operator factory-pattern delete-operator

0
推荐指数
1
解决办法
533
查看次数

为什么发生内存访问违规?

我正在尝试反转一个字符串,不知道为什么我得到这个以下的错误Unhandled exception at 0x00f818c2 in CPP_TEST.exe: 0xC0000005: Access violation writing location 0x00f87838.?请帮我.

void swap(char* in, int start, int end)
{
    char *temp = new char;
    *temp = in[start];
    in[start] = in[end];//Unhandled exception at 0x00f818c2 in CPP_TEST.exe: 0xC0000005: Access violation writing location 0x00f87838.
    in[end] = *temp;
}
void Reverse(char* in, int start, int end)
{
    if(start == end)
    {
        cout << in <<endl;
        return;
    }
    else
    {
        while(start != end)
        {
            swap(in, start++, end--);
            //Reverse(in, start, end);
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
219
查看次数

为什么 Python 需要两个存储块

为什么 Python 中的 list 需要两个存储块?

列表存储在两个内存块中(一个是固定大小的,另一个是可变大小的用于存储数据)

是不是因为一个块存储根地址,另一个是跟踪列表的动态变化?

python memory-management list python-3.x

0
推荐指数
1
解决办法
115
查看次数

代码python有什么问题

在此输入图像描述当我在http://www.pyschools.com/quiz/view_question/s2-q1中执行此代码时.它给出了答案的错误......请帮助问题是:

Write a function to convert temperature from Celsius to Fahrenheit scale.
oC to oF Conversion: Multipy by 9, then divide by 5, then add 32.

Examples

    >>> Cel2Fah(28.0)
    '82.40'
    >>> Cel2Fah(0.00)
    '32.00'
Run Code Online (Sandbox Code Playgroud)

我的答案

 # Note: Return a string of 2 decimal places.
    def Cel2Fah(temp):
        x = 9.00
        y = 5.00
        z = 32.00
        a = temp * x
        a = a / y
        a = a + z
        return(a)
Run Code Online (Sandbox Code Playgroud)

python

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