问题列表 - 第8062页

当只有一个线程写入共享变量时,是否需要锁定?

我有2个线程和一个共享float全局.一个线程只写入变量,而另一个只读取它,我是否需要锁定对此变量的访问?换一种说法:

volatile float x;

void reader_thread() {
    while (1) {
        // Grab mutex here?
        float local_x = x;
        // Release mutex?
        do_stuff_with_value(local_x);
    }
}

void writer_thread() {
    while (1) {
        float local_x = get_new_value_from_somewhere();
        // Grab mutex here?
        x = local_x;
        // Release mutex?
    }
}
Run Code Online (Sandbox Code Playgroud)

我主要关注的是,一个的加载或存储float不是原子,使得local_xreader_thread结束有一个假的,部分更新后的值.

  1. 这是一个有效的问题吗?
  2. 有没有另一种方法可以在没有互斥锁的情况下保证原子性?
  3. 使用sig_atomic_t作为共享变量的工作,假设它有足够的位用于我的目的?

有问题的语言是C使用pthreads.

c multithreading mutex locking

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

确定是否在JPanel中找到组件的快速方法

我可以知道如何确定是否在JPanel中找到了某个组件?

boolean isThisComponentFoundInJPanel(Component c)
{
    Component[] components = jPanel.getComponents();
    for (Component component : components) {
        if (c== component) {
                return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

使用循环效率不高.有没有更好的方法?

java swing

8
推荐指数
3
解决办法
9790
查看次数

如何在单独的文件夹中添加资源?

当我尝试通过单击"添加现有项目"在资源设计器中添加资源时,该项目将放在"资源"文件夹中.

问题是,如果我在Resource目录中创建一个新目录并将资源放在那里,我会收到编译器错误,指出无法找到这些文件.

我无法将所有资源放在一个文件夹中,因为我必须添加2500个图像,其中一些与其名称相匹配.

c# visual-studio-express visual-studio

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

实体框架 - 分层设计 - 在哪里放置连接字符串?

我正在使用一个分层架构,将实体框架作为我的数据层,顶部有一堆存储库,其中包含Linq-To-Entities查询.数据层是一个项目,旁边是我有一个服务层和接口,这是一个网站.

我希望我的网站负责为我的实体模型指定连接字符串.我该怎么做呢?

我使用单例方法到达我的实体存储库,该存储库位于数据层内.

谢谢

c# entity-framework data-access-layer n-tier-architecture

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

为什么一个CPU核心运行速度比其他核心慢?

我正在对一个大型科学应用程序进行基准测试,发现在相同输入的情况下它有时会慢10%.经过大量搜索,我发现只有在我的四核CPU核心#2(特别是运行在2.4 GHz的Intel Q6600)上运行时才会出现减速.该应用程序是单线程的,大部分时间都用在CPU密集型矩阵数学例程中.

现在我知道一个核心比其他核心慢,我可以通过将处理器亲和力设置为所有运行的相同核心来获得准确的基准测试结果.但是,我仍然想知道为什么一个核心更慢.

我尝试了几个简单的测试用例来确定CPU的缓慢部分,但测试用例运行的时间相同,即使在慢速核心#2上也是如此.只有复杂的应用程序显示减速.以下是我尝试过的测试用例:

问题:为什么一个CPU内核比其他内核慢,哪个CPU部分导致这种减速?

编辑:更多测试显示了一些Heisenbug行为.当我明确设置处理器亲和性时,我的应用程序不会减慢核心#2的速度.但是,如果它选择在没有明确设置处理器关联的情况下在核心#2上运行,那么应用程序运行速度会慢大约10%.这就解释了为什么我的简单测试用例没有显示相同的减速,因为它们都明确设置了处理器亲和性.因此,看起来有些进程喜欢在核心#2上生存,但如果设置了处理器亲和性,它就会失控.

结论:如果您需要在多核计算机上获得单线程程序的准确基准,请确保设置处理器关联.

benchmarking multicore affinity

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

从WPF/XBAP应用程序检测网络连接?

有没有办法确定XBAP(浏览器中托管的WPF)应用程序是否具有网络连接?如果没有,用C#和.NET编写的传统Windows客户端如何确定它是否具有连接性?

基本上,用例是在通过WiFi连接到Intranet的移动笔记本电脑上运行的XBAP应用程序.笔记本电脑无法连接到Internet.取决于用户当时的位置,WiFi连接可能存在也可能不存在.

.net c# wcf xbap

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

SQL迭代列表以在每个项目上调用EXEC

尝试概括我的问题...我想为SELECT语句返回的每个结果执行存储过程.

在心理上我想尝试像EXEC myStoredProc(SELECT id FROM sometable WHERE cond = @param)

有关我的具体案例的更多细节......我有一个SaaS应用程序.我想从系统中删除租户.在我删除租户之前,我必须删除与该租户关联的数据库中的所有记录.

租户拥有诸如包含许多不同类型的字段的表单之类的项目.我已经有一个存储过程删除一个Form及其所有相关项(如Fields).出于维护原因(即不想复制确定记录和表单之间的依赖关系和关联的逻辑)我想为每个属于租户的表单调用StoredProc.

我可以通过运行查询来检索表单列表...选择formId FROM Forms WHERE Tenant = @TenantId

我想对该查询的结果做的是EXEC我的Delete_Form存储过程.

我怎样才能做到这一点?

sql iteration loops stored-procedures exec

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

这是在SQL中进行布尔测试的正确方法吗?

假设active是一个"boolean field"(小int,0或1)

# Find all active users
select * from users where active 

# Find all inactive users
select * from users where NOT active 
Run Code Online (Sandbox Code Playgroud)

换句话说,"NOT"运算符可以直接应用于布尔字段吗?

sql boolean-expression

69
推荐指数
4
解决办法
16万
查看次数

对解除引用的指针进行后递增?

试图理解C中指针的行为,我对以下内容感到有点惊讶(下面的示例代码):

#include <stdio.h>

void add_one_v1(int *our_var_ptr)
{
    *our_var_ptr = *our_var_ptr +1;
}

void add_one_v2(int *our_var_ptr)
{
    *our_var_ptr++;
}

int main()
{
    int testvar;

    testvar = 63;
    add_one_v1(&(testvar));         /* Try first version of the function */
    printf("%d\n", testvar);        /* Prints out 64                     */
    printf("@ %p\n\n", &(testvar));

    testvar = 63;
    add_one_v2(&(testvar));         /* Try first version of the function */
    printf("%d\n", testvar);        /* Prints 63 ?                       */
    printf("@ %p\n", &(testvar));   /* Address remains identical         */
}
Run Code Online (Sandbox Code Playgroud)

输出:

64
@ 0xbf84c6b0

63
@ 0xbf84c6b0 …
Run Code Online (Sandbox Code Playgroud)

c pointers operator-precedence

51
推荐指数
6
解决办法
4万
查看次数

存储应用设置的最佳方式是什么?(MVC)

我正在开发一个适合MVC模式的swing应用程序,我想知道存储设置的最佳位置,例如宽度/高度,xml文件位置......这些设置是否也可以通过模型进行设置?我应该使用全局静态类吗?单身人士?

提前致谢

java model-view-controller swing config

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