Я ищу ссылочную реализацию операций IEEE 754. Есть ли такая вещь?
Сначала необходимо разделить прочитанное здесь и там о транзакциях SQL Server на 2 отдельных случая: локальный и распределенный.
Локальные транзакции SQL :
Распределенные транзакции :
Таким образом, когда клиент создает .Net TransacityScope и под этой областью транзакции выполняет несколько запросов на одном сервере, все эти запросы являются локальными транзакциями, зарегистрированными в распределенной транзакции. Простой пример:
class Program
{
static string sqlBatch = @"
set nocount on;
declare @i int;
set @i = 0;
while @i < 100000
begin
insert into test (a) values (replicate('a',100));
set @i = @i+1;
end";
static void Main(string[] args)
{
try
{
TransactionOptions to = new TransactionOptions();
to.IsolationLevel = IsolationLevel.ReadCommitted;
using (TransactionScope scp = new TransactionScope(TransactionScopeOption.Required, to))
{
using (SqlConnection connA = new SqlConnection(Settings.Default.connString))
{
connA.Open();
using (SqlConnection connB = new SqlConnection(Settings.Default.connString))
{
connB.Open();
SqlCommand cmdA = new SqlCommand(sqlBatch, connA);
SqlCommand cmdB = new SqlCommand(sqlBatch, connB);
IAsyncResult arA = cmdA.BeginExecuteNonQuery();
IAsyncResult arB = cmdB.BeginExecuteNonQuery();
WaitHandle.WaitAll(new WaitHandle[] { arA.AsyncWaitHandle, arB.AsyncWaitHandle });
cmdA.EndExecuteNonQuery(arA);
cmdB.EndExecuteNonQuery(arB);
}
}
scp.Complete();
}
}
catch (Exception e)
{
Console.Error.Write(e);
}
}
}
Создайте фиктивную тестовую таблицу
create table test (id int not null identity(1,1) primary key, a varchar(100));
и запустите код в образце. Вы увидите, что оба запроса выполняются параллельно, каждый из которых вставляет 100 000 строк в таблицу, затем оба фиксируют, когда область транзакции завершена. Таким образом, проблемы, которые вы видите, не связаны ни с SQL Server, ни с TransacityScope, они могут легко справиться с описанным сценарием. Более того, код очень прост и прост, и нет необходимости создавать зависимые транзакции, клонировать или продвигать транзакции.
Обновлено
Использование явных потоков и зависимых транзакций:
private class ThreadState
{
public DependentTransaction Transaction {get; set;}
public EventWaitHandle Done {get; set;}
public SqlConnection Connection { get; set; }
}
static void Main(string[] args)
{
try
{
TransactionOptions to = new TransactionOptions();
to.IsolationLevel = IsolationLevel.ReadCommitted;
using (TransactionScope scp = new TransactionScope(TransactionScopeOption.Required, to))
{
ThreadState stateA = new ThreadState
{
Transaction = Transaction.Current.DependentClone(DependentCloneOption.BlockCommitUntilComplete),
Done = new AutoResetEvent(false),
Connection = new SqlConnection(Settings.Default.connString),
};
stateA.Connection.Open();
ThreadState stateB = new ThreadState
{
Transaction = Transaction.Current.DependentClone(DependentCloneOption.BlockCommitUntilComplete),
Done = new AutoResetEvent(false),
Connection = new SqlConnection(Settings.Default.connString),
};
stateB.Connection.Open();
ThreadPool.QueueUserWorkItem(new WaitCallback(Worker), stateA);
ThreadPool.QueueUserWorkItem(new WaitCallback(Worker), stateB);
WaitHandle.WaitAll(new WaitHandle[] { stateA.Done, stateB.Done });
scp.Complete();
//TODO: dispose the open connections
}
}
catch (Exception e)
{
Console.Error.Write(e);
}
}
private static void Worker(object args)
{
Debug.Assert(args is ThreadState);
ThreadState state = (ThreadState) args;
try
{
using (TransactionScope scp = new TransactionScope(state.Transaction))
{
SqlCommand cmd = new SqlCommand(sqlBatch, state.Connection);
cmd.ExecuteNonQuery();
scp.Complete();
}
state.Transaction.Complete();
}
catch (Exception e)
{
Console.Error.WriteLine(e);
state.Transaction.Rollback();
}
finally
{
state.Done.Set();
}
}
-121--4321020- Можно ли добавить в файл Web.Config
<appSettings>
<add key="GoogleMapAPI" value="XXXXXX" />
</appSettings>
для каждого домена
Затем добавить его на Страницу
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&key=<%=ConfigurationManager.ApplicationSettings["GoogleMapAPI"] %>&hl=de"
Можно создать нечто подобное с помощью базы данных или заголовков узлов для управления каждым ключом для каждого домена.
-121--3080540-Я считаю, что библиотеки C SoftFloat и fdlibm подходят для того, что вы ищете. Другие включают Linux (GNU libc, glibc ) или * BSD libc математические функции . Наконец, CRlibm также должен представлять интерес для вас.
Ульрих Дреппер имеет интересный взгляд на различные математические библиотеки , которые, возможно, также стоит прочитать.
В теге < activity >
в файле манифеста отсутствует следующее:
<intent-filter . . . >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Для получения дополнительной информации см. здесь
-121--4268470-Похоже на Silverlight 3.1, по крайней мере, это больше не является Я не могу воспроизвести его, во всяком случае.
-121--3960925-Довольно запутанный вопрос; в C++ предполагается, что этот вид деталей обеспечивается аппаратным обеспечением или компилятором. Итак, в C++ сложение с плавающей запятой будет
float a = 1.0;
float b = 2.0;
float c = a + b;
я уверен, что это не то, что вы на самом деле имели в виду; возможно, вы выиграете от этой страницы , которая пытается эмулировать IEEE-754-compliant оборудование в javascript?
Должен вас разочаровать: их практически нет.
Хотя технически существуют системы, совместимые с IEEE-754, поскольку они не реализуют необязательные функции, описанные в стандарте, справочная реализация, разрешающая
не существует в стандартных языках. Это вызывает повторяющиеся проблемы Уильяма Кахана, главной силы, стоящей за стандартом и его адаптацией для процессоров Intel.
Я не знаю, есть ли какие-то эзотерические языки, которые поддерживают их, но я могу исключить Java, C #, C ++, Fortran.
РЕДАКТИРОВАТЬ: Несмотря на отсутствие поддержки компилятора, я советую реализацию Hausers SoftFloat , предоставленную mctylr. Хаузер знает, что делает.