问题列表 - 第9976页

优雅地关闭多线程应用程序?

我有一个有两个线程的应用程序.

第一个(主线程)使用套接字捕获数据并更新DataTables

第二个将DataTables插入数据库.

应用程序工作正常,但当它关闭时,主线程完成读取数据并在第二个线程中调用Abort方法,这可能是插入数据库,这会导致数据不一致.

目前我使用以下解决方案来克服"插入时中止"

编辑:在强大的答案后,我改变了代码

void MainThread()
{
     while(Read())
     {
        //Read Data through socket
        try
        {
           //Wait on Mutex1
           //Update Tables
        }
        finally
        {
          //Release Mutex1
        }
     }
   _isrunning = false;
   _secondThread.Join();
}
void SecondThread()
{
     while(_isrunning)
     {
        try
        {
           //Wait on Mutex1
           //Insert Tables into Database using transactions
        }
        finally
        {
           //Release Mutex1           
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

c# database multithreading application-close

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

良好的图像大小调整框架

我目前正在使用PHP调整图像大小,我目前的代码大约需要2-2.2秒(不包括上传时间)来将图像大小调整为两种尺寸,一种缩略图尺寸和一种中等尺寸.任何人都可以推荐一个我可以下载的框架或类,可以快速调整图像大小吗?

谢谢.

php upload gd resize

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

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

如何使用Spring和JDBCTemplate取消长时间运行的查询?

JDBC java.sql.Statement类有一个cancel()方法.这可以在另一个线程中调用以取消当前运行的语句.

如何使用Spring实现这一目标?我无法找到在运行查询时获取对语句的引用的方法.我也找不到类似取消的方法.

这是一些示例代码.想象一下这需要10秒才能执行,有时根据用户的要求,我想取消它:

    final int i = simpleJdbcTemplate.queryForInt("select max(gameid) from game");
Run Code Online (Sandbox Code Playgroud)

我如何修改这个,所以我有一个java.sql.Statement对象的引用?

java spring jdbctemplate

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

检查压缩文件的md5,而不完全解压缩

我想检查Ubuntu磁盘备份的完整性,用dd复制到Windows共享上.没有足够的空间来解压缩备份.是否有一个实用程序来计算压缩文件的md5而不完全解压缩?

compression md5

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

32位Intel处理器上的内存对齐

Intel的32位处理器(如Pentium)具有64位宽的数据总线,因此每次访问可获取8个字节.基于此,我假设这些处理器在地址总线上发出的物理地址总是8的倍数.

首先,这个结论是否正确?

其次,如果它是正确的,那么应该将数据结构成员对齐在8字节边界上.但我见过人们在这些处理器上使用4字节对齐.

他们怎么能这样做呢?

memory x86 32-bit intel alignment

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

"每种语言都是为特定目的而创建的"

我正在阅读"Dot Net Thoughts"中的" 为什么语言很重要(为什么我更喜欢C#) " 的帖子,本文的第一段以此声明结束:

......每种语言都是为特定目的而创建的.

这让我想到了某些语言存在的"原因"......即它们存在的具体原因是什么.

我从这个问题的目标是列出尽可能多的编程语言及其存在的主要原因 ......为什么使用它们; 这将有助于人们决定使用什么语言来执行特定任务.

语言,如C#,VB,Haskell,Eiffel,Perl,Python,Java等; 程序语言,函数语言,面向对象语言等......

language-agnostic programming-languages

12
推荐指数
4
解决办法
2542
查看次数

获取中继器的项目

我试图在页面移动(分页)之前获取所有转发器选中的转发器项目的复选框,并将它们存储在某个地方.

 foreach (RepeaterItem ri in rpt.Items)
  {        
      CheckBox box = (CheckBox)ri.FindControl("chkBox");
       if (box.Checked)
       {
          ...
       }
  }
Run Code Online (Sandbox Code Playgroud)

问题是我从哪里调用此函数?我试图从ObjectDataSource1_Selected(我使用objectdatasource填充转发器)和ObjectDataSource1_Selecting调用它,但rpt.Items.Count也是0.

rpt_PreRender()事件,返回正确数量的项目,但它在选中复选框之前发生,而不是之后.

我能做什么?

c# asp.net repeater traversal

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

尽管将表列宽设置为固定值,但表列宽度仍会增加

有关问题请参阅截图:

在此输入图像描述

上面的代码是由html生成的.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>SYM</title>
    <style type="text/css" media="all">
        @import "test.css";
    </style>
</head>
<body>
    <div id="container">
    <div class="round-box">
      <table class="round-box-layout">
        <thead><tr><td></td><td></td><td></td></tr></thead>
        <tbody><tr><td></td><td>
          Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
          sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 
          Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
          nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
          reprehenderit in voluptate …
Run Code Online (Sandbox Code Playgroud)

html css css-tables

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

为什么不叫我的新操作员

我想看到一个动态加载的库(加载了dlopen等)确实使用了自己的新的删除操作符而不是调用程序中定义的那些操作符.所以我写了下面的library.cpp

#include <exception>
#include <new>
#include <cstdlib>
#include <cstdio>
#include "base.hpp"
void* operator new(size_t size) {
    std::printf("New of library called\n");
    void *p=std::malloc(size); 
    if (p == 0) // did malloc succeed?
        throw std::bad_alloc(); // ANSI/ISO compliant behavior
    return p;
}
void operator delete(void* p) {
    std::printf("Delete of library called\n");
    std::free(p);
}
class Derived : public Base {
public:
    Derived() : Base(10) { }
};
extern "C" {
    Base* create() {
        return new Derived;
    }
    void destroy(Base* p) {
        delete p;
    } …
Run Code Online (Sandbox Code Playgroud)

c++ overriding allocation g++

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