小编mis*_*mer的帖子

WPF应用程序冻结了Windows 7

.NET 3.5 WPF在Windows 7 64bit上有一个应用程序.我遇到拖动和移动主应用程序窗口时发生的奇怪的系统冻结问题.基本上整个系统冻结(UI),应用程序停止渲染.启动任务管理器(CTRL+ ALT+ DEL)会解冻系统和应用程序.

应用程序本身是一个交易应用程序,它在后台线程中处理大量消息.

有没有人遇到过这类问题?特别是任务管理器解锁冻结的奇怪之处.这种奇怪行为的原因是什么?

我几乎可以肯定它与将某些操作分派给UI线程有关.

.net c# wpf multithreading

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

Cuda块/网格尺寸:何时使用dim3?

我需要对使用 dim3 设置 CUDA 内核中的线程数进行一些清理。

我有一个一维浮点数组中的图像,我正在将其复制到设备中:

checkCudaErrors(cudaMemcpy( img_d, img.data, img.row * img.col * sizeof(float), cudaMemcpyHostToDevice));
Run Code Online (Sandbox Code Playgroud)

现在我需要设置网格和块大小来启动我的内核:

dim3 blockDims(512);
dim3 gridDims((unsigned int) ceil(img.row * img.col * 3 / blockDims.x));
myKernel<<< gridDims, blockDims>>>(...)
Run Code Online (Sandbox Code Playgroud)

我想知道:在这种情况下,由于数据是一维的,如果我使用一个 dim3 结构有关系吗?使用的任何好处

unsigned int num_blocks = ceil(img.row * img.col * 3 / blockDims.x));
myKernel<<<num_blocks, 512>>>(...)
Run Code Online (Sandbox Code Playgroud)

反而?

另外,我的理解是否正确,在使用 dim3 时,我将在内核中引用带有 2 个索引的线程 ID:

int x = blockIdx.x * blockDim.x + threadIdx.x;
int y = blockIdx.y * blockDim.y + threadIdx.y;
Run Code Online (Sandbox Code Playgroud)

当我不使用dim3 时,我只会使用一个索引?

非常感谢,

cuda gpu

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

DataGrid 中的 EnableColumnVirtualization 如何工作?

鉴于以下情况Datagrid

<DataGrid AutoGenerateColumns="False" HeadersVisibility="Column" 
        IsReadOnly="True"
        VirtualizingPanel.IsVirtualizing="true" VirtualizingPanel.VirtualizationMode="Standard"
        EnableColumnVirtualization="True"
        ItemsSource="{Binding Data, IsAsync=True}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Header1" Width="Auto" Binding="{Binding Property1}" />
        <DataGridTextColumn Header="Header2" Width="Auto" Binding="{Binding Property2, Mode=OneWay}" />
    </DataGrid.Columns>
</DataGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)

为什么它不显示任何行?当我删除EnableColumnVirtualization或设置它时false一切正常。EnableRowVirtualization可以添加或删除而不显示任何问题。

这种行为有解释吗?

wpf datagrid

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

如何在两个 Linux 内核模块之间共享全局变量?

我试图在 USB 连接和断开连接时收到通知。所以我正在尝试实现信号。我在 debugfs 中创建了一个文件“file1”。然后我提供了一个简单的写文件操作。

在用户空间中有一个用户空间应用程序,它将把它的PID写入debugfs的“file1”中。

在内核空间中,我可以使用上面提到的 write 方法获取传递的 PID。但我想在不同的内核模块中使用这个PID。所以我尝试使用EXPORT_SYMBOL();,但如果我不包含公共头文件,则会出现编译错误。如果我包含头文件,当我刷新图像时,我会看到 PID 为“0”。

有人能告诉我,这是否正确?或者告诉我哪里出错了。或者,当 PID 写入文件时,我可以在不同的内核模块中收到通知吗?如果是这样怎么办?

c linux linux-kernel

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

如何使用不同的.bashrc

我在/ home /文件夹中得到了常见的.bashrc.但我有另一个.basrch(.bashrc1)(我有很多别名)我无法将内容从一个复制到另一个.所以.我想知道是否有可能使用.bashrc1作为默认值,或者是否有一个额外的命令来执行.bashrc1中的别名

谢谢

linux bash redhat

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

如何避免贝拉迪的异常现象?

当我们增加进程的帧数时,页面错误的数量应该会减少,但有时页面错误会增加(Belady 的异常)。如何避免这种情况?

operating-system virtual-memory page-replacement

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

如何将整数指针传递给函数?

这里我在C中执行一个简单的代码.它正在编译很好但在运行时陷阱.

#include <stdio.h>

#include <conio.h>

void sum(int x,int y,int *z)
{
    *z=x+y;
}

void main()
{
    int a=10,b=20,*c;

    sum(a,b,c);
    printf("sum is %d\n",*c);
}
Run Code Online (Sandbox Code Playgroud)

有人可以指出问题是什么吗?另外,如何将指针传递给函数?

c pointers function

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

为什么这段代码没有互斥量?

我试图了解锁如何在多线程中工作.当我执行以下代码而没有锁定时,即使将变量sum声明为全局变量并且多个线程正在更新它,它也能正常工作.任何人都可以解释为什么这里的线程在没有锁的共享变量上工作得很好?

这是代码:

    #include <pthread.h>
#include <stdio.h>
#include <stdlib.h>

#define NTHREADS      100
#define ARRAYSIZE   1000000
#define ITERATIONS   ARRAYSIZE / NTHREADS

double  sum=0.0, a[ARRAYSIZE];
pthread_mutex_t sum_mutex;


void *do_work(void *tid) 
{
  int i, start, *mytid, end;
  double mysum=0.0;

  /* Initialize my part of the global array and keep local sum */
  mytid = (int *) tid;
  start = (*mytid * ITERATIONS);
  end = start + ITERATIONS;
  printf ("Thread %d doing iterations %d to %d\n",*mytid,start,end-1); 
  for (i=start; i < end ; i++) {
    a[i] …
Run Code Online (Sandbox Code Playgroud)

c multithreading locking pthreads

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